Import dEQP.

Import drawElements Quality Program from an internal repository.

Bug: 17388917
Change-Id: Ic109fe4a57e31b2a816113d90fbdf51a43e7abeb
diff --git a/scripts/check_resolution_list.py b/scripts/check_resolution_list.py
new file mode 100644
index 0000000..5afcca3
--- /dev/null
+++ b/scripts/check_resolution_list.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+import re
+import sys
+from fnmatch import fnmatch
+
+def fail (msg):
+	print "ERROR: " + msg
+	sys.exit(-1)
+
+# filename -> [case name]
+def readCaseList (filename):
+	f = open(filename, 'rb')
+	cases = []
+	for line in f:
+		if line[0:6] == "TEST: ":
+			cases.append(line[6:].strip())
+	f.close()
+	return cases
+
+# filename -> [(filter, min, recommended)]
+def readResolutionList (filename):
+	f = open(filename, 'rb')
+	resList = []
+	for line in f:
+		line = line.strip()
+		params = line.split('\t')
+		if len(params) == 3:
+			resList.append((params[0], params[1], params[2]))
+		elif len(params) != 0:
+			fail("Invalid line in resolution list: '%s'" % line)
+	f.close()
+	return resList
+
+def getMatchingCases (cases, pattern):
+	matching = []
+	for case in cases:
+		if fnmatch(case, pattern):
+			matching.append(case)
+	return matching
+
+def isResolutionOk (res):
+	return re.match('^[1-9][0-9]*x[1-9][0-9]*$', res) != None
+
+if __name__ == "__main__":
+	if len(sys.argv) != 3:
+		print "%s: [caselist] [resolution list]" % sys.argv[0]
+		sys.exit(-1)
+
+	caseList	= readCaseList(sys.argv[1])
+	resList		= readResolutionList(sys.argv[2])
+
+	# Pass 1: sanity check for resolution values
+	for pattern, minRes, recRes in resList:
+		if not isResolutionOk(minRes) or not isResolutionOk(recRes):
+			fail("Invalid resolution: '%s %s %s'" % (pattern, minRes, recRes))
+
+	# Pass 2: check that each case is specified by one rule
+	markedCases = set()
+	for pattern, minRes, recRes in resList:
+		matchingCases = getMatchingCases(caseList, pattern)
+
+		if len(matchingCases) == 0:
+			fail("Pattern '%s' does not match any cases" % pattern)
+
+		for case in matchingCases:
+			if case in markedCases:
+				fail("Case '%s' specified multiple times (when processing '%s')" % (case, pattern))
+			markedCases.add(case)
+
+	for case in caseList:
+		if not case in markedCases:
+			fail("Case '%s' not specified by any rule" % case)