# -*- coding: utf-8 -*-

#-------------------------------------------------------------------------
#
# Copyright 2015 The Android Open Source Project
# Copyright (C) 2016 The Khronos Group Inc
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT 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

from collections import OrderedDict

from build_caselists import Module, getModuleByName, DEFAULT_BUILD_DIR, DEFAULT_TARGET
from mustpass import Project, Package, Mustpass, Configuration, include, exclude, genMustpassLists

sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts"))

from build.common import DEQP_DIR
from build.config import ANY_GENERATOR, BuildConfig


COPYRIGHT_DECLARATION = """\
/*     Copyright (C) 2016-2017 The Khronos Group Inc
 *
 *     Licensed under the Apache License, Version 2.0 (the "License");
 *     you may not use this file except in compliance with the License.
 *     You may obtain a copy of the License at
 *
 *          http://www.apache.org/licenses/LICENSE-2.0
 *
 *     Unless required by applicable law or agreed to in writing, software
 *     distributed under the License is distributed on an "AS IS" BASIS,
 *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *     See the License for the specific language governing permissions and
 *     limitations under the License.
*/"""

buildPath						= DEFAULT_BUILD_DIR.format(targetName = DEFAULT_TARGET, buildType = "Release")

#-------------------------------------------------- ES MUSTPASS----------------------------------------------------------------------

CTS_AOSP_MP_DATA_DIR			= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gles", "aosp_mustpass")

CTS_AOSP_MP_DEVICE_DIR			= "gl_cts/data/mustpass/gles/aosp_mustpass"

CTS_MP_INC_DIR					= os.path.join(DEQP_DIR, "external", "openglcts", "modules", "runner")

CTS_AOSP_MP_ES_PROJECT			= Project(name = "AOSP Mustpass ES", path = CTS_AOSP_MP_DATA_DIR, incpath = CTS_MP_INC_DIR, devicepath = CTS_AOSP_MP_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

CTS_KHR_MP_DATA_DIR				= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gles", "khronos_mustpass")

CTS_KHR_MP_DEVICE_DIR			= "gl_cts/data/mustpass/gles/khronos_mustpass"

CTS_KHR_MP_ES_PROJECT			= Project(name = "Khronos Mustpass ES", path = CTS_KHR_MP_DATA_DIR, incpath = CTS_MP_INC_DIR, devicepath = CTS_KHR_MP_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

CTS_AOSP_MP_EGL_DEVICE_DIR		= "gl_cts/data/mustpass/egl/aosp_mustpass"

CTS_AOSP_MP_EGL_DATA_DIR		= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "egl", "aosp_mustpass")

CTS_AOSP_MP_EGL_PROJECT			= Project(name = "AOSP Mustpass EGL", path = CTS_AOSP_MP_EGL_DATA_DIR, incpath = CTS_MP_INC_DIR, devicepath = CTS_AOSP_MP_EGL_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

CTS_KHR_MP_NOCTX_DATA_DIR		= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gles", "khronos_mustpass_noctx")

CTS_KHR_MP_NOCTX_DEVICE_DIR		= "gl_cts/data/mustpass/gles/khronos_mustpass_noctx"

CTS_KHR_MP_NOCTX_ES_PROJECT		= Project(name = "Khronos Mustpass ES NoContext", path = CTS_KHR_MP_NOCTX_DATA_DIR, incpath = CTS_MP_INC_DIR, devicepath = CTS_KHR_MP_NOCTX_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

CTS_KHR_MP_SINGLE_DATA_DIR		= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gles", "khronos_mustpass_single")

CTS_KHR_MP_SINGLE_DEVICE_DIR	= "gl_cts/data/mustpass/gles/khronos_mustpass_single"

CTS_KHR_MP_SINGLE_ES_PROJECT		= Project(name = "Khronos Mustpass ES Single Config", path = CTS_KHR_MP_SINGLE_DATA_DIR, incpath = CTS_MP_INC_DIR, devicepath = CTS_KHR_MP_SINGLE_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

EGL_MODULE						= getModuleByName("dEQP-EGL")
ES2CTS_MODULE					= getModuleByName("dEQP-GLES2")
ES3CTS_MODULE					= getModuleByName("dEQP-GLES3")
ES31CTS_MODULE					= getModuleByName("dEQP-GLES31")

ES2KHR_MODULE					= getModuleByName("KHR-GLES2")
ES3KHR_MODULE					= getModuleByName("KHR-GLES3")
ES31KHR_MODULE					= getModuleByName("KHR-GLES31")
ES32KHR_MODULE					= getModuleByName("KHR-GLES32")
NOCTX_ES2_KHR_MODULE			= getModuleByName("KHR-NOCTX-ES2")
NOCTX_ES32_KHR_MODULE			= getModuleByName("KHR-NOCTX-ES32")
SINGLE_ES32_KHR_MODULE			= getModuleByName("KHR-Single-GLES32")

ES2GTF_MODULE					= getModuleByName("GTF-GLES2")
ES3GTF_MODULE					= getModuleByName("GTF-GLES3")
ES31GTF_MODULE					= getModuleByName("GTF-GLES31")

GLCTS_GLES2_PKG						= Package(module = ES2CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters			= [include("gles2-master.txt")]),
	])
GLCTS_3_2_2_GLES3_PKG					= Package(module = ES3CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters			= [include("gles3-master.txt")]),

		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= [include("gles3-master.txt"), include("gles3-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig		= "rgba8888d24s8ms4",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters			= [include("gles3-master.txt"),
									   include("gles3-multisample.txt"),
									   exclude("gles3-multisample-issues.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig		= "rgb565d0s0ms0",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters			= [include("gles3-master.txt"),
									   include("gles3-pixelformat.txt"),
									   exclude("gles3-pixelformat-issues.txt")]),
	])
GLCTS_3_2_2_GLES31_PKG					= Package(module = ES31CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters			= [include("gles31-master.txt")]),
		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters			= [include("gles31-master.txt"), include("gles31-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig		= "rgba8888d24s8ms4",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters			= [include("gles31-master.txt"), include("gles31-multisample.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig		= "rgb565d0s0ms0",
					rotation		= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters			= [include("gles31-master.txt"), include("gles31-pixelformat.txt")]),
	])

# 3.2.3.x
GLCTS_3_2_3_EGL_COMMON_FILTERS			= [include("egl-master.txt"),
		exclude("egl-test-issues.txt"),
		exclude("egl-internal-api-tests.txt"),
		exclude("egl-driver-issues.txt")
	]
GLCTS_3_2_3_EGL_PKG						= Package(module = EGL_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "unspecified",
					surfacewidth    = "256",
                    surfaceheight   = "256",
					filters			= GLCTS_3_2_3_EGL_COMMON_FILTERS),
	])

GLCTS_3_2_3_GLES2_COMMON_FILTERS	= [
		include("gles2-master.txt"),
		exclude("gles2-test-issues.txt"),
		exclude("gles2-spec-issues.txt"),
		exclude("gles2-driver-issues.txt"),
		exclude("gles2-hw-issues.txt")
	]
GLCTS_3_2_3_GLES2_PKG         = Package(module = ES2CTS_MODULE, configurations = [
        # Master
        Configuration(name          = "master",
                    glconfig        = "rgba8888d24s8ms0",
                    rotation        = "unspecified",
                    surfacewidth    = "256",
                    surfaceheight   = "256",
                    filters         = GLCTS_3_2_3_GLES2_COMMON_FILTERS),
    ])

GLCTS_3_2_3_GLES3_COMMON_FILTERS		= [
		include("gles3-master.txt"),
		exclude("gles3-test-issues.txt"),
		exclude("gles3-spec-issues.txt"),
		exclude("gles3-driver-issues.txt"),
	]

GLCTS_3_2_3_GLES3_PKG				= Package(module = ES3CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "unspecified",
					surfacewidth    = "256",
					surfaceheight   = "256",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [exclude("gles3-hw-issues.txt")]),
		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig	= "rgba8888d24s8ms4",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-multisample.txt"), exclude("gles3-multisample-hw-issues.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig	= "rgb565d0s0ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters		= GLCTS_3_2_3_GLES3_COMMON_FILTERS + [include("gles3-pixelformat.txt")]),

	])

GLCTS_3_2_3_GLES31_COMMON_FILTERS	= [
		include("gles31-master.txt"),
		exclude("gles31-test-issues.txt"),
		exclude("gles31-spec-issues.txt"),
		exclude("gles31-driver-issues.txt"),
		exclude("gles31-hw-issues.txt")
	]

GLCTS_3_2_3_GLES31_PKG				= Package(module = ES31CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS),

		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig	= "rgba8888d24s8ms4",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= [include("gles31-master.txt"),
									include("gles31-multisample.txt"),
									exclude("gles31-multisample-test-issues.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig	= "rgb565d0s0ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters		= GLCTS_3_2_3_GLES31_COMMON_FILTERS + [include("gles31-pixelformat.txt")]),
	])

GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS	= [
		include("gles32-khr-master.txt"),
		exclude("gles32-khr-test-issues.txt"),
		exclude("gles32-khr-spec-issues.txt")
	]

GLCTS_3_2_3_GLES32_KHR_PKG_1CFG			= Package(module = ES32KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "-1",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "-1",
					surfaceheight	= "64",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
	])

GLCTS_3_2_3_GLES32_KHR_PKG_N1CFG		= Package(module = ES32KHR_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= GLCTS_3_2_3_GLES32_KHR_COMMON_FILTERS),
	])


# master
MASTER_EGL_COMMON_FILTERS			= [include("egl-master.txt"),
										exclude("egl-test-issues.txt"),
										exclude("egl-internal-api-tests.txt")]
MASTER_EGL_PKG						= Package(module = EGL_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig		= "rgba8888d24s8ms0",
					rotation		= "unspecified",
					surfacewidth    = "256",
                    surfaceheight   = "256",
					filters			= MASTER_EGL_COMMON_FILTERS),
	])

MASTER_GLES2_COMMON_FILTERS			= [
				include("gles2-master.txt"),
				exclude("gles2-test-issues.txt"),
				exclude("gles2-spec-issues.txt")
		]
MASTER_GLES2_PKG         = Package(module = ES2CTS_MODULE, configurations = [
        # Master
        Configuration(name          = "master",
                    glconfig        = "rgba8888d24s8ms0",
                    rotation        = "unspecified",
                    surfacewidth    = "256",
                    surfaceheight   = "256",
                    filters         = MASTER_GLES2_COMMON_FILTERS),
    ])

MASTER_GLES3_COMMON_FILTERS		= [
		include("gles3-master.txt"),
		exclude("gles3-test-issues.txt"),
		exclude("gles3-spec-issues.txt")
	]
MASTER_GLES3_PKG				= Package(module = ES3CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "unspecified",
					surfacewidth    = "256",
					surfaceheight   = "256",
					filters		= MASTER_GLES3_COMMON_FILTERS),
		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig	= "rgba8888d24s8ms4",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-multisample.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig	= "rgb565d0s0ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-pixelformat.txt")]),
	])
MASTER_GLES31_COMMON_FILTERS             = [
		include("gles31-master.txt"),
		exclude("gles31-test-issues.txt"),
		exclude("gles31-spec-issues.txt")
	]

MASTER_GLES31_PKG				= Package(module = ES31CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "master",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= MASTER_GLES31_COMMON_FILTERS),

		# Rotations
		Configuration(name			= "rotate-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "0",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "90",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-portrait",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "180",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),
		Configuration(name			= "rotate-reverse-landscape",
					glconfig	= "rgba8888d24s8ms0",
					rotation	= "270",
					surfacewidth	= "256",
					surfaceheight	= "256",
					os				= "android",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")]),

		# MSAA
		Configuration(name			= "multisample",
					glconfig	= "rgba8888d24s8ms4",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-multisample.txt")]),

		# Pixel format
		Configuration(name			= "565-no-depth-no-stencil",
					glconfig	= "rgb565d0s0ms0",
					rotation	= "unspecified",
					surfacewidth	= "256",
					surfaceheight	= "256",
					skip			= "x11",
					filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-pixelformat.txt")]),
	])

GLCTS_GLES2_KHR_PKG_1CFG			= Package(module = ES2KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-khr-master.txt")]),
	])

GLCTS_GLES2_DEQP_PKG_1CFG			= Package(module = ES2CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-deqp-master.txt")]),
	])

GLCTS_GLES2_GTF_PKG_1CFG			= Package(module = ES2GTF_MODULE, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles2-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "-1",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles2-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "-1",
					surfaceheight	= "64",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles2-gtf-master.txt")]),
		Configuration(name			= "gtf-egl",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-gtf-egl.txt")]),
		Configuration(name			= "gtf-egl",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles2-gtf-egl.txt")]),
	])

GLCTS_GLES2_KHR_PKG_N1CFG			= Package(module = ES2KHR_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-khr-master.txt")]),
	])

GLCTS_GLES2_DEQP_PKG_N1CFG			= Package(module = ES2CTS_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-deqp-master.txt")]),
	])

GLCTS_GLES2_GTF_PKG_N1CFG			= Package(module = ES2GTF_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters		= [include("gles2-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles2-gtf-master.txt")]),
	])

GLCTS_GLES3_DEQP_PKG_1CFG			= Package(module = ES3CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-deqp-master.txt")]),
	])

GLCTS_GLES3_KHR_PKG_1CFG			= Package(module = ES3KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-khr-master.txt")]),
	])

GLCTS_GLES3_GTF_PKG_1CFG			= Package(module = ES3GTF_MODULE, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles3-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "-1",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles3-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "-1",
					surfaceheight	= "64",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles3-gtf-master.txt")]),
	])

GLCTS_GLES3_DEQP_PKG_N1CFG			= Package(module = ES3CTS_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-deqp-master.txt")]),
	])

GLCTS_GLES3_KHR_PKG_N1CFG			= Package(module = ES3KHR_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-khr-master.txt")]),
	])
GLCTS_GLES3_GTF_PKG_N1CFG			= Package(module = ES3GTF_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles3-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles3-gtf-master.txt")]),
	])

GLCTS_GLES31_DEQP_PKG_1CFG			= Package(module = ES31CTS_MODULE, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-deqp-master.txt")]),
	])

GLCTS_GLES31_KHR_PKG_1CFG			= Package(module = ES31KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-khr-master.txt")]),
	])

GLCTS_GLES31_GTF_PKG_1CFG			= Package(module = ES31GTF_MODULE, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles31-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "-1",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles31-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "-1",
					surfaceheight	= "64",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= [include("gles31-gtf-master.txt")]),
	])

GLCTS_GLES31_KHR_PKG_N1CFG			= Package(module = ES31KHR_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-khr-master.txt")]),
	])

GLCTS_GLES31_DEQP_PKG_N1CFG			= Package(module = ES31CTS_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "deqp-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-deqp-master.txt")]),
	])

GLCTS_GLES31_GTF_PKG_N1CFG			= Package(module = ES31GTF_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "gtf-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles31-gtf-master.txt")]),
		Configuration(name			= "gtf-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= [include("gles31-gtf-master.txt")]),
	])

MASTER_GLES32_COMMON_FILTERS             = [
		include("gles32-khr-master.txt"),
		exclude("gles32-khr-test-issues.txt"),
		exclude("gles32-khr-spec-issues.txt")
	]

GLCTS_GLES32_KHR_PKG_1CFG			= Package(module = ES32KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= MASTER_GLES32_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= MASTER_GLES32_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "-1",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= MASTER_GLES32_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "-1",
					surfaceheight	= "64",
					baseseed		= "3",
					fboconfig		= "rgba8888d24s8",
					filters			= MASTER_GLES32_COMMON_FILTERS),
	])

GLCTS_GLES32_KHR_PKG_N1CFG			= Package(module = ES32KHR_MODULE, useforfirsteglconfig = False, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= MASTER_GLES32_COMMON_FILTERS),
		Configuration(name			= "khr-master",
					surfacewidth	= "113",
					surfaceheight	= "47",
					baseseed		= "2",
					filters			= MASTER_GLES32_COMMON_FILTERS),
	])

GLCTS_NOCTX_ES2_KHR_PKG			= Package(module = NOCTX_ES2_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-noctx-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles2-khr-master.txt")]),
	])

GLCTS_NOCTX_ES32_KHR_PKG		= Package(module = NOCTX_ES32_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-noctx-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= MASTER_GLES32_COMMON_FILTERS),
	])

GLCTS_SINGLE_ES32_KHR_PKG		= Package(module = SINGLE_ES32_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-single",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gles32-khr-single.txt")]),
	])


ES_MUSTPASS_LISTS		= [
	# 3.2.2.x
	Mustpass(project = CTS_KHR_MP_ES_PROJECT,	version = "3.2.2.x", isCurrent=False,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_DEQP_PKG_1CFG,
						GLCTS_GLES2_GTF_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES2_DEQP_PKG_N1CFG,
						GLCTS_GLES2_GTF_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_DEQP_PKG_1CFG,
						GLCTS_GLES3_GTF_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES3_DEQP_PKG_N1CFG,
						GLCTS_GLES3_GTF_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_DEQP_PKG_1CFG,
						GLCTS_GLES31_GTF_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_GLES31_DEQP_PKG_N1CFG,
						GLCTS_GLES31_GTF_PKG_N1CFG,
						GLCTS_GLES32_KHR_PKG_1CFG,
						GLCTS_GLES32_KHR_PKG_N1CFG,
						]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT,	version = "3.2.2.x", isCurrent=False,
			packages = [GLCTS_GLES2_PKG, GLCTS_3_2_2_GLES3_PKG, GLCTS_3_2_2_GLES31_PKG]),

	# 3.2.3.x
	Mustpass(project = CTS_KHR_MP_ES_PROJECT,	version = "3.2.3.x", isCurrent=False,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_GTF_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES2_GTF_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_GTF_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES3_GTF_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_GTF_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_GLES31_GTF_PKG_N1CFG,
						GLCTS_3_2_3_GLES32_KHR_PKG_1CFG,
						GLCTS_3_2_3_GLES32_KHR_PKG_N1CFG,
						]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT, version = "3.2.3.x", isCurrent=False,
			packages = [GLCTS_3_2_3_GLES2_PKG, GLCTS_3_2_3_GLES3_PKG, GLCTS_3_2_3_GLES31_PKG]),

	Mustpass(project = CTS_AOSP_MP_EGL_PROJECT, version = "3.2.3.x", isCurrent=False,
			packages = [GLCTS_3_2_3_EGL_PKG]),

	# 3.2.4.x
	Mustpass(project = CTS_KHR_MP_ES_PROJECT,	version = "3.2.4.x", isCurrent=False,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_3_2_3_GLES32_KHR_PKG_1CFG,
						GLCTS_3_2_3_GLES32_KHR_PKG_N1CFG,
						]),


	Mustpass(project = CTS_KHR_MP_NOCTX_ES_PROJECT, version = "3.2.4.x", isCurrent=False,
			packages = [GLCTS_NOCTX_ES2_KHR_PKG, GLCTS_NOCTX_ES32_KHR_PKG]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT, version = "3.2.4.x", isCurrent=False,
			packages = [GLCTS_3_2_3_GLES2_PKG, GLCTS_3_2_3_GLES3_PKG, GLCTS_3_2_3_GLES31_PKG]),

	Mustpass(project = CTS_AOSP_MP_EGL_PROJECT, version = "3.2.4.x", isCurrent=False,
			packages = [GLCTS_3_2_3_EGL_PKG]),

	# 3.2.5.x

	Mustpass(project = CTS_KHR_MP_ES_PROJECT,   version = "3.2.5.x", isCurrent=False,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_GLES32_KHR_PKG_1CFG,
						GLCTS_GLES32_KHR_PKG_N1CFG,
						]),

	Mustpass(project = CTS_KHR_MP_NOCTX_ES_PROJECT, version = "3.2.5.x", isCurrent=False,
			packages = [GLCTS_NOCTX_ES2_KHR_PKG, GLCTS_NOCTX_ES32_KHR_PKG]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT, version = "3.2.5.x", isCurrent=False,
			packages = [GLCTS_3_2_3_GLES2_PKG, GLCTS_3_2_3_GLES3_PKG, GLCTS_3_2_3_GLES31_PKG]),

	Mustpass(project = CTS_AOSP_MP_EGL_PROJECT, version = "3.2.5.x", isCurrent=False,
			packages = [GLCTS_3_2_3_EGL_PKG]),

	# 3.2.6.x

	Mustpass(project = CTS_KHR_MP_ES_PROJECT,   version = "3.2.6.x", isCurrent=True,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_GLES32_KHR_PKG_1CFG,
						GLCTS_GLES32_KHR_PKG_N1CFG,
						]),

	Mustpass(project = CTS_KHR_MP_NOCTX_ES_PROJECT, version = "3.2.6.x", isCurrent=True,
			packages = [GLCTS_NOCTX_ES2_KHR_PKG, GLCTS_NOCTX_ES32_KHR_PKG]),

	Mustpass(project = CTS_KHR_MP_SINGLE_ES_PROJECT, version = "3.2.6.x", isCurrent=True,
			packages = [GLCTS_SINGLE_ES32_KHR_PKG]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT, version = "3.2.6.x", isCurrent=True,
			packages = [GLCTS_3_2_3_GLES2_PKG, GLCTS_3_2_3_GLES3_PKG, GLCTS_3_2_3_GLES31_PKG]),

	Mustpass(project = CTS_AOSP_MP_EGL_PROJECT, version = "3.2.6.x", isCurrent=True,
			packages = [GLCTS_3_2_3_EGL_PKG]),

	# master

	Mustpass(project = CTS_KHR_MP_ES_PROJECT,	version = "master", isCurrent=False,
			packages = [GLCTS_GLES2_KHR_PKG_1CFG,
						GLCTS_GLES2_KHR_PKG_N1CFG,
						GLCTS_GLES3_KHR_PKG_1CFG,
						GLCTS_GLES3_KHR_PKG_N1CFG,
						GLCTS_GLES31_KHR_PKG_1CFG,
						GLCTS_GLES31_KHR_PKG_N1CFG,
						GLCTS_GLES32_KHR_PKG_1CFG,
						GLCTS_GLES32_KHR_PKG_N1CFG,
						]),

	Mustpass(project = CTS_KHR_MP_NOCTX_ES_PROJECT, version = "master", isCurrent=False,
			packages = [GLCTS_NOCTX_ES2_KHR_PKG, GLCTS_NOCTX_ES32_KHR_PKG]),

	Mustpass(project = CTS_KHR_MP_SINGLE_ES_PROJECT, version = "master", isCurrent=False,
			packages = [GLCTS_SINGLE_ES32_KHR_PKG]),

	Mustpass(project = CTS_AOSP_MP_ES_PROJECT, version = "master", isCurrent=False,
			packages = [MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG]),

	Mustpass(project = CTS_AOSP_MP_EGL_PROJECT, version = "master", isCurrent=False,
			packages = [MASTER_EGL_PKG])

	]

ES_BUILD_CONFIG				= BuildConfig(buildPath, "Debug", ["-DDEQP_TARGET=%s" % DEFAULT_TARGET, "-DGLCTS_GTF_TARGET=gles32"])

#-------------------------------------------------- GL MUSTPASS----------------------------------------------------------------------

GL_CTS_MP_INC_DIR					= os.path.join(DEQP_DIR, "external", "openglcts", "modules", "runner")

GL_CTS_KHR_MP_DATA_DIR				= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gl", "khronos_mustpass")

GL_CTS_KHR_MP_DEVICE_DIR			= "gl_cts/data/mustpass/gl/khronos_mustpass"

GL_CTS_KHR_MP_PROJECT				= Project(name = "Khronos Mustpass GL", path = GL_CTS_KHR_MP_DATA_DIR, incpath = GL_CTS_MP_INC_DIR, devicepath = GL_CTS_KHR_MP_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

GL_CTS_KHR_MP_NOCTX_DATA_DIR		= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gl", "khronos_mustpass_noctx")

GL_CTS_KHR_MP_NOCTX_DEVICE_DIR		= "gl_cts/data/mustpass/gl/khronos_mustpass_noctx"

GL_CTS_NOCTX_PROJECT				= Project(name = "Khronos Mustpass GL NoContext", path = GL_CTS_KHR_MP_NOCTX_DATA_DIR, incpath = GL_CTS_MP_INC_DIR, devicepath = GL_CTS_KHR_MP_NOCTX_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

GL_CTS_KHR_MP_SINGLE_DATA_DIR		= os.path.join(DEQP_DIR, "external", "openglcts", "data", "mustpass", "gl", "khronos_mustpass_single")

GL_CTS_KHR_MP_SINGLE_DEVICE_DIR		= "gl_cts/data/mustpass/gl/khronos_mustpass_single"

GL_CTS_KHR_SINGLE_PROJECT			= Project(name = "Khronos Mustpass GL Single Config", path = GL_CTS_KHR_MP_SINGLE_DATA_DIR, incpath = GL_CTS_MP_INC_DIR, devicepath = GL_CTS_KHR_MP_SINGLE_DEVICE_DIR, copyright = COPYRIGHT_DECLARATION)

GL_MODULES							= OrderedDict([
			('KHR-GL46',		['master',		[include('gl46-master.txt'), exclude('gl46-test-issues.txt'), exclude('gl46-waivers.txt')]]),
			('KHR-GL45',		['master',		[include('gl45-master.txt'), exclude('gl45-test-issues.txt'), exclude('gl45-waivers.txt')]]),
			('KHR-GL44',		['master',		[include('gl44-master.txt'), exclude('gl44-test-issues.txt'), exclude('gl44-waivers.txt')]]),
			('KHR-GL43',		['master',		[include('gl43-master.txt'), exclude('gl43-test-issues.txt'), exclude('gl43-waivers.txt')]]),
			('KHR-GL42',		['master',		[include('gl42-master.txt'), exclude('gl42-test-issues.txt'), exclude('gl42-waivers.txt')]]),
			('KHR-GL41',		['master',		[include('gl41-master.txt'), exclude('gl41-test-issues.txt'), exclude('gl41-waivers.txt')]]),
			('KHR-GL40',		['master',		[include('gl40-master.txt'), exclude('gl40-test-issues.txt'), exclude('gl40-waivers.txt')]]),
			('KHR-GL33',		['master',		[include('gl33-master.txt'), exclude('gl33-test-issues.txt')]]),
			('KHR-GL32',		['master',		[include('gl32-master.txt'), exclude('gl32-test-issues.txt')]]),
			('KHR-GL31',		['master',		[include('gl31-master.txt'), exclude('gl31-test-issues.txt')]]),
			('KHR-GL30',		['master',		[include('gl30-master.txt'), exclude('gl30-test-issues.txt')]]),
			('GTF-GL46',		['gtf-master',	[include('gl46-gtf-master.txt')]]),
			('GTF-GL45',		['gtf-master',	[include('gl45-gtf-master.txt')]]),
			('GTF-GL44',		['gtf-master',	[include('gl44-gtf-master.txt')]]),
			('GTF-GL43',		['gtf-master',	[include('gl43-gtf-master.txt')]]),
			('GTF-GL42',		['gtf-master',	[include('gl42-gtf-master.txt')]]),
			('GTF-GL41',		['gtf-master',	[include('gl41-gtf-master.txt')]]),
			('GTF-GL40',		['gtf-master',	[include('gl40-gtf-master.txt')]]),
			('GTF-GL33',		['gtf-master',	[include('gl33-gtf-master.txt')]]),
			('GTF-GL32',		['gtf-master',	[include('gl32-gtf-master.txt')]]),
			('GTF-GL31',		['gtf-master',	[include('gl31-gtf-master.txt')]]),
			('GTF-GL30',		['gtf-master',	[include('gl30-gtf-master.txt')]])
		])

NOCTX_GL30_KHR_MODULE			= getModuleByName("KHR-NOCTX-GL30")
NOCTX_GL40_KHR_MODULE			= getModuleByName("KHR-NOCTX-GL40")
NOCTX_GL43_KHR_MODULE			= getModuleByName("KHR-NOCTX-GL43")
NOCTX_GL45_KHR_MODULE			= getModuleByName("KHR-NOCTX-GL45")
SINGLE_GL45_KHR_MODULE			= getModuleByName("KHR-Single-GL45")
SINGLE_GL46_KHR_MODULE			= getModuleByName("KHR-Single-GL46")

GLCTS_NOCTX_GL30_KHR_PKG			= Package(module = NOCTX_GL30_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl30-khr-master.txt")]),
	])

GLCTS_NOCTX_GL40_KHR_PKG			= Package(module = NOCTX_GL40_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl40-khr-master.txt")]),
	])

GLCTS_NOCTX_GL43_KHR_PKG			= Package(module = NOCTX_GL43_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl43-khr-master.txt")]),
	])

GLCTS_NOCTX_GL45_KHR_PKG			= Package(module = NOCTX_GL45_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-master",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl45-khr-master.txt")]),
	])

GLCTS_SINGLE_GL45_KHR_PKG			= Package(module = SINGLE_GL45_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-single",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl45-khr-single.txt")]),
	])

GLCTS_SINGLE_GL46_KHR_PKG			= Package(module = SINGLE_GL46_KHR_MODULE, configurations = [
		# Master
		Configuration(name			= "khr-single",
					surfacewidth	= "64",
					surfaceheight	= "64",
					baseseed		= "1",
					filters			= [include("gl46-khr-single.txt")]),
	])

def generateGLMustpass():
		gl_packages = []
		for packageName in GL_MODULES:
			cfgName			= GL_MODULES[packageName][0]
			cfgFilter		= GL_MODULES[packageName][1]
			config_w64xh64	= Configuration(name = cfgName, surfacewidth = "64", surfaceheight = "64", baseseed = "1", filters = cfgFilter)
			config_w113xh47	= Configuration(name = cfgName, surfacewidth = "113", surfaceheight = "47", baseseed = "2", filters = cfgFilter)
			config_w64		= Configuration(name = cfgName, surfacewidth = "64", surfaceheight = "-1", baseseed = "3", fboconfig = "rgba8888d24s8", filters = cfgFilter)
			config_h64		= Configuration(name = cfgName, surfacewidth = "-1", surfaceheight = "64", baseseed = "3", fboconfig = "rgba8888d24s8", filters = cfgFilter)

			pkgModule		= getModuleByName(packageName)
			pkg0			= Package(module = pkgModule,
										useforfirsteglconfig = True,
										configurations = [
											config_w64xh64, config_w113xh47, config_w64, config_h64
										]
									)
			pkg1			= Package(module = pkgModule,
										useforfirsteglconfig = False,
										configurations = [
											config_w64xh64, config_w113xh47,
										]
									)
			gl_packages.append(pkg0)
			gl_packages.append(pkg1)

		mustpass = [Mustpass(project = GL_CTS_KHR_MP_PROJECT, version = "4.6.0.x", isCurrent=False, packages = gl_packages),
					Mustpass(project = GL_CTS_NOCTX_PROJECT, version = "4.6.0.x", isCurrent=False, packages = [GLCTS_NOCTX_GL30_KHR_PKG, GLCTS_NOCTX_GL40_KHR_PKG, GLCTS_NOCTX_GL43_KHR_PKG, GLCTS_NOCTX_GL45_KHR_PKG]),
				    Mustpass(project = GL_CTS_KHR_MP_PROJECT, version = "4.6.1.x", isCurrent=True, packages = gl_packages),
                    Mustpass(project = GL_CTS_NOCTX_PROJECT, version = "4.6.1.x", isCurrent=True, packages = [GLCTS_NOCTX_GL30_KHR_PKG, GLCTS_NOCTX_GL40_KHR_PKG, GLCTS_NOCTX_GL43_KHR_PKG, GLCTS_NOCTX_GL45_KHR_PKG]),
                    Mustpass(project = GL_CTS_KHR_SINGLE_PROJECT, version = "4.6.1.x", isCurrent=True, packages = [GLCTS_SINGLE_GL45_KHR_PKG, GLCTS_SINGLE_GL46_KHR_PKG]),
					]
		return mustpass

GL_BUILD_CONFIG					= BuildConfig(buildPath, "Debug", ["-DDEQP_TARGET=%s" % DEFAULT_TARGET, "-DGLCTS_GTF_TARGET=gl"])

if __name__ == "__main__":
	gtfCMakeLists = os.path.join(DEQP_DIR, "external", "kc-cts", "src", "GTF_ES", "CMakeLists.txt")
	if os.path.isfile(gtfCMakeLists) == False:
		raise Exception("GTF sources not found. GTF module is required to build the mustpass files. 'cd external && python fetch_kc_cts.py'")
	genMustpassLists(ES_MUSTPASS_LISTS, ANY_GENERATOR, ES_BUILD_CONFIG)
	gl_mustpass_lists = generateGLMustpass()
	genMustpassLists(gl_mustpass_lists, ANY_GENERATOR, GL_BUILD_CONFIG)
