blob: ced4106eee1db66b4740f51ed8f361f2798d1a4b [file] [log] [blame]
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------
# drawElements Quality Program utilities
# --------------------------------------
#
# Copyright 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#-------------------------------------------------------------------------
import os
import sys
import string
import argparse
import tempfile
import shutil
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts"))
from build.common import *
from build.config import *
from build.build import *
class Module:
def __init__ (self, name, api):
self.name = name
self.api = api
MODULES = [
Module("dEQP-EGL", "EGL"),
Module("dEQP-GLES2", "GLES2"),
Module("dEQP-GLES3", "GLES3"),
Module("dEQP-GLES31", "GLES31"),
Module("KHR-GLES3", "GLES3"),
Module("KHR-GLES2", "GLES2"),
Module("KHR-GLES31", "GLES31"),
Module("KHR-GLES32", "GLES32"),
Module("KHR-NOCTX-ES2", "GLES2"),
Module("KHR-NOCTX-ES32","GLES32"),
Module("GTF-GLES2", "GLES2" ),
Module("GTF-GLES3", "GLES3" ),
Module("GTF-GLES31", "GLES31"),
Module("KHR-GL46", "GL46"),
Module("KHR-GL45", "GL45"),
Module("KHR-GL44", "GL44"),
Module("KHR-GL43", "GL43"),
Module("KHR-GL42", "GL42"),
Module("KHR-GL41", "GL41"),
Module("KHR-GL40", "GL40"),
Module("KHR-GL33", "GL33"),
Module("KHR-GL32", "GL32"),
Module("KHR-GL31", "GL31"),
Module("KHR-GL30", "GL30"),
Module("GTF-GL46", "GL46"),
Module("GTF-GL45", "GL45"),
Module("GTF-GL44", "GL44"),
Module("GTF-GL43", "GL43"),
Module("GTF-GL42", "GL42"),
Module("GTF-GL41", "GL41"),
Module("GTF-GL40", "GL40"),
Module("GTF-GL33", "GL33"),
Module("GTF-GL32", "GL32"),
Module("GTF-GL31", "GL31"),
Module("GTF-GL30", "GL30"),
Module("KHR-NOCTX-GL30","GL30"),
Module("KHR-NOCTX-GL40","GL40"),
Module("KHR-NOCTX-GL43","GL43"),
Module("KHR-NOCTX-GL45","GL45"),
Module("KHR-Single-GL45","GL45"),
Module("KHR-Single-GL46","GL46"),
Module("KHR-Single-GLES32","GLES32"),
]
GLCTS_BIN_NAME = "glcts"
GLCTS_DIR_NAME = "external/openglcts/modules/"
DEFAULT_BUILD_DIR = os.path.join(tempfile.gettempdir(), "deqp-caselists", "{targetName}-{buildType}")
DEFAULT_TARGET = "null"
def getModuleByName (name):
for module in MODULES:
if module.name == name:
return module
else:
raise Exception("Unknown module %s" % name)
def getBuildConfig (buildPathPtrn, targetName, buildType):
buildPath = buildPathPtrn.format(
targetName = targetName,
buildType = buildType)
return BuildConfig(buildPath, buildType, ["-DDEQP_TARGET=%s" % targetName])
def getModulesPath (buildCfg):
return os.path.join(buildCfg.getBuildDir(), GLCTS_DIR_NAME)
def getCaseListFileName (module, caseListType):
mname = module.name
if mname == "KHR-NOCTX-ES2" or mname == "KHR-NOCTX-ES32" or mname == "KHR-NOCTX-GL30" or mname == "KHR-NOCTX-GL40" or mname == "KHR-NOCTX-GL43" or mname == "KHR-NOCTX-GL45":
mname = "KHR-NoContext"
return "%s-cases.%s" % (mname, caseListType)
def getCaseListPath (buildCfg, module, caseListType):
workDir = getModulesPath(buildCfg)
return os.path.join(workDir, getCaseListFileName(module, caseListType))
def genCaseList (buildCfg, generator, caseListType):
workDir = getModulesPath(buildCfg)
pushWorkingDir(workDir)
try:
binPath = generator.getBinaryPath(buildCfg.getBuildType(), os.path.join(".", GLCTS_BIN_NAME))
execute([binPath, "--deqp-runmode=%s-caselist" % caseListType])
finally:
popWorkingDir()
def genAndCopyCaseList (buildCfg, generator, module, dstDir, caseListType):
caseListFile = getCaseListFileName(module, caseListType)
srcPath = getCaseListPath(buildCfg, module, caseListType)
dstPath = os.path.join(dstDir, caseListFile)
if os.path.exists(srcPath):
os.remove(srcPath)
genCaseList(buildCfg, generator, module, caseListType)
if not os.path.exists(srcPath):
raise Exception("%s not generated" % srcPath)
shutil.copyfile(srcPath, dstPath)