1 # -*- coding: utf-8 -*-
3 #-------------------------------------------------------------------------
4 # drawElements Quality Program utilities
5 # --------------------------------------
7 # Copyright 2015 The Android Open Source Project
9 # Licensed under the Apache License, Version 2.0 (the "License");
10 # you may not use this file except in compliance with the License.
11 # You may obtain a copy of the License at
13 # http://www.apache.org/licenses/LICENSE-2.0
15 # Unless required by applicable law or agreed to in writing, software
16 # distributed under the License is distributed on an "AS IS" BASIS,
17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 # See the License for the specific language governing permissions and
19 # limitations under the License.
21 #-------------------------------------------------------------------------
30 sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts"))
32 from build.common import *
33 from build.config import *
34 from build.build import *
38 def __init__ (self, name, api):
43 Module("dEQP-EGL", "EGL"),
44 Module("dEQP-GLES2", "GLES2"),
45 Module("dEQP-GLES3", "GLES3"),
46 Module("dEQP-GLES31", "GLES31"),
47 Module("KHR-GLES3", "GLES3"),
48 Module("KHR-GLES2", "GLES2"),
49 Module("KHR-GLES31", "GLES31"),
50 Module("KHR-GLES32", "GLES32"),
51 Module("KHR-NOCTX-ES2", "GLES2"),
52 Module("KHR-NOCTX-ES32","GLES32"),
53 Module("GTF-GLES2", "GLES2" ),
54 Module("GTF-GLES3", "GLES3" ),
55 Module("GTF-GLES31", "GLES31"),
56 Module("KHR-GL46", "GL46"),
57 Module("KHR-GL45", "GL45"),
58 Module("KHR-GL44", "GL44"),
59 Module("KHR-GL43", "GL43"),
60 Module("KHR-GL42", "GL42"),
61 Module("KHR-GL41", "GL41"),
62 Module("KHR-GL40", "GL40"),
63 Module("KHR-GL33", "GL33"),
64 Module("KHR-GL32", "GL32"),
65 Module("KHR-GL31", "GL31"),
66 Module("KHR-GL30", "GL30"),
67 Module("GTF-GL46", "GL46"),
68 Module("GTF-GL45", "GL45"),
69 Module("GTF-GL44", "GL44"),
70 Module("GTF-GL43", "GL43"),
71 Module("GTF-GL42", "GL42"),
72 Module("GTF-GL41", "GL41"),
73 Module("GTF-GL40", "GL40"),
74 Module("GTF-GL33", "GL33"),
75 Module("GTF-GL32", "GL32"),
76 Module("GTF-GL31", "GL31"),
77 Module("GTF-GL30", "GL30"),
78 Module("KHR-NOCTX-GL30","GL30"),
79 Module("KHR-NOCTX-GL40","GL40"),
80 Module("KHR-NOCTX-GL45","GL45"),
82 GLCTS_BIN_NAME = "glcts"
83 GLCTS_DIR_NAME = "external/openglcts/modules/"
84 DEFAULT_BUILD_DIR = os.path.join(tempfile.gettempdir(), "deqp-caselists", "{targetName}-{buildType}")
85 DEFAULT_TARGET = "null"
87 def getModuleByName (name):
88 for module in MODULES:
89 if module.name == name:
92 raise Exception("Unknown module %s" % name)
94 def getBuildConfig (buildPathPtrn, targetName, buildType):
95 buildPath = buildPathPtrn.format(
96 targetName = targetName,
97 buildType = buildType)
99 return BuildConfig(buildPath, buildType, ["-DDEQP_TARGET=%s" % targetName])
101 def getModulesPath (buildCfg):
102 return os.path.join(buildCfg.getBuildDir(), GLCTS_DIR_NAME)
104 def getCaseListFileName (module, caseListType):
106 if mname == "KHR-NOCTX-ES2" or mname == "KHR-NOCTX-ES32" or mname == "KHR-NOCTX-GL30" or mname == "KHR-NOCTX-GL40" or mname == "KHR-NOCTX-GL45":
107 mname = "KHR-NoContext"
108 return "%s-cases.%s" % (mname, caseListType)
110 def getCaseListPath (buildCfg, module, caseListType):
111 workDir = getModulesPath(buildCfg)
113 return os.path.join(workDir, getCaseListFileName(module, caseListType))
115 def genCaseList (buildCfg, generator, caseListType):
116 workDir = getModulesPath(buildCfg)
118 pushWorkingDir(workDir)
121 binPath = generator.getBinaryPath(buildCfg.getBuildType(), os.path.join(".", GLCTS_BIN_NAME))
122 execute([binPath, "--deqp-runmode=%s-caselist" % caseListType])
126 def genAndCopyCaseList (buildCfg, generator, module, dstDir, caseListType):
127 caseListFile = getCaseListFileName(module, caseListType)
128 srcPath = getCaseListPath(buildCfg, module, caseListType)
129 dstPath = os.path.join(dstDir, caseListFile)
131 if os.path.exists(srcPath):
134 genCaseList(buildCfg, generator, module, caseListType)
136 if not os.path.exists(srcPath):
137 raise Exception("%s not generated" % srcPath)
139 shutil.copyfile(srcPath, dstPath)