1# -*- coding: utf-8 -*-
2
3#-------------------------------------------------------------------------
4# drawElements Quality Program utilities
5# --------------------------------------
6#
7# Copyright 2015 The Android Open Source Project
8#
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
12#
13#      http://www.apache.org/licenses/LICENSE-2.0
14#
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.
20#
21#-------------------------------------------------------------------------
22
23from build.common import DEQP_DIR
24from build.config import ANY_GENERATOR
25from build_caselists import Module, getModuleByName, getBuildConfig, DEFAULT_BUILD_DIR, DEFAULT_TARGET
26from mustpass import Project, Package, Mustpass, Configuration, include, exclude, genMustpassLists, parseBuildConfigFromCmdLineArgs
27
28import os
29
30COPYRIGHT_DECLARATION = """
31     Copyright (C) 2016 The Android Open Source Project
32
33     Licensed under the Apache License, Version 2.0 (the "License");
34     you may not use this file except in compliance with the License.
35     You may obtain a copy of the License at
36
37          http://www.apache.org/licenses/LICENSE-2.0
38
39     Unless required by applicable law or agreed to in writing, software
40     distributed under the License is distributed on an "AS IS" BASIS,
41     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
42     See the License for the specific language governing permissions and
43     limitations under the License.
44     """
45
46CTS_DATA_DIR					= os.path.join(DEQP_DIR, "android", "cts")
47
48CTS_PROJECT						= Project(path = CTS_DATA_DIR, copyright = COPYRIGHT_DECLARATION)
49
50EGL_MODULE						= getModuleByName("dEQP-EGL")
51GLES2_MODULE					= getModuleByName("dEQP-GLES2")
52GLES3_MODULE					= getModuleByName("dEQP-GLES3")
53GLES31_MODULE					= getModuleByName("dEQP-GLES31")
54VULKAN_MODULE					= getModuleByName("dEQP-VK")
55
56# Master
57
58MASTER_EGL_COMMON_FILTERS		= [include("egl-master.txt"),
59								   exclude("egl-test-issues.txt"),
60								   exclude("egl-internal-api-tests.txt"),
61								   exclude("egl-manual-robustness.txt"),
62								   exclude("egl-driver-issues.txt"),
63								   exclude("egl-temp-excluded.txt")]
64MASTER_EGL_PKG					= Package(module = EGL_MODULE, configurations = [
65		# Master
66		Configuration(name			= "master",
67					  glconfig		= "rgba8888d24s8ms0",
68					  rotation		= "unspecified",
69					  surfacetype	= "window",
70					  required		= True,
71					  filters		= MASTER_EGL_COMMON_FILTERS,
72				      runtime		= "23m"),
73		# Risky subset
74		Configuration(name			= "master-risky",
75					  glconfig		= "rgba8888d24s8ms0",
76					  rotation		= "unspecified",
77					  surfacetype	= "window",
78					  required		= True,
79					  filters		= [include("egl-temp-excluded.txt")],
80				      runtime		= "2m"),
81	])
82
83MASTER_GLES2_COMMON_FILTERS		= [
84		include("gles2-master.txt"),
85		exclude("gles2-test-issues.txt"),
86		exclude("gles2-failures.txt"),
87		exclude("gles2-temp-excluded.txt"),
88	]
89MASTER_GLES2_PKG				= Package(module = GLES2_MODULE, configurations = [
90		# Master
91		Configuration(name			= "master",
92					  glconfig		= "rgba8888d24s8ms0",
93					  rotation		= "unspecified",
94					  surfacetype	= "window",
95					  required		= True,
96					  filters		= MASTER_GLES2_COMMON_FILTERS,
97					  runtime		= "46m",
98					  runByDefault		= False),
99		Configuration(name			= "master-2020-03-01",
100					  glconfig		= "rgba8888d24s8ms0",
101					  rotation		= "unspecified",
102					  surfacetype	= "window",
103					  required		= True,
104					  filters		= [include("gles2-master-2020-03-01.txt")],
105					  runtime		= "46m"),
106		Configuration(name			= "master-2021-03-01",
107					  glconfig		= "rgba8888d24s8ms0",
108					  rotation		= "unspecified",
109					  surfacetype	= "window",
110					  required		= True,
111					  filters		= MASTER_GLES2_COMMON_FILTERS + [exclude("gles2-master-2020-03-01.txt")],
112					  runtime		= "10m"),
113	])
114
115MASTER_GLES3_COMMON_FILTERS		= [
116		include("gles3-master.txt"),
117		exclude("gles3-hw-issues.txt"),
118		exclude("gles3-driver-issues.txt"),
119		exclude("gles3-test-issues.txt"),
120		exclude("gles3-spec-issues.txt"),
121		exclude("gles3-temp-excluded.txt"),
122	]
123MASTER_GLES3_PKG				= Package(module = GLES3_MODULE, configurations = [
124		# Master
125		Configuration(name			= "master",
126					  glconfig		= "rgba8888d24s8ms0",
127					  rotation		= "unspecified",
128					  surfacetype	= "window",
129					  required		= True,
130					  filters		= MASTER_GLES3_COMMON_FILTERS,
131					  runtime		= "1h50m",
132					  runByDefault		= False),
133		Configuration(name			= "master-2020-03-01",
134					  glconfig		= "rgba8888d24s8ms0",
135					  rotation		= "unspecified",
136					  surfacetype	= "window",
137					  required		= True,
138					  filters		= [include("gles3-master-2020-03-01.txt")],
139					  runtime		= "1h50m"),
140		Configuration(name			= "master-2021-03-01",
141					  glconfig		= "rgba8888d24s8ms0",
142					  rotation		= "unspecified",
143					  surfacetype	= "window",
144					  required		= True,
145					  filters		= MASTER_GLES3_COMMON_FILTERS + [exclude("gles3-master-2020-03-01.txt")],
146					  runtime		= "10m"),
147		# Rotations
148		Configuration(name			= "rotate-portrait",
149					  glconfig		= "rgba8888d24s8ms0",
150					  rotation		= "0",
151					  surfacetype	= "window",
152					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
153					  runtime		= "1m"),
154		Configuration(name			= "rotate-landscape",
155					  glconfig		= "rgba8888d24s8ms0",
156					  rotation		= "90",
157					  surfacetype	= "window",
158					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
159					  runtime		= "1m"),
160		Configuration(name			= "rotate-reverse-portrait",
161					  glconfig		= "rgba8888d24s8ms0",
162					  rotation		= "180",
163					  surfacetype	= "window",
164					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
165					  runtime		= "1m"),
166		Configuration(name			= "rotate-reverse-landscape",
167					  glconfig		= "rgba8888d24s8ms0",
168					  rotation		= "270",
169					  surfacetype	= "window",
170					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
171					  runtime		= "1m"),
172
173		# MSAA
174		Configuration(name			= "multisample",
175					  glconfig		= "rgba8888d24s8ms4",
176					  rotation		= "unspecified",
177					  surfacetype	= "window",
178					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-multisample.txt"),
179																	 exclude("gles3-multisample-issues.txt")],
180					  runtime		= "1m"),
181
182		# Pixel format
183		Configuration(name			= "565-no-depth-no-stencil",
184					  glconfig		= "rgb565d0s0ms0",
185					  rotation		= "unspecified",
186					  surfacetype	= "window",
187					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-pixelformat.txt"),
188																	 exclude("gles3-pixelformat-issues.txt")],
189					  runtime		= "1m"),
190		# Incremental dEQP
191		Configuration(name			= "incremental-deqp",
192					  filters		= [include("gles3-incremental-deqp.txt")],
193					  runtime		= "5m",
194                                          runByDefault  = False),
195	])
196
197MASTER_GLES31_COMMON_FILTERS	= [
198		include("gles31-master.txt"),
199		exclude("gles31-hw-issues.txt"),
200		exclude("gles31-driver-issues.txt"),
201		exclude("gles31-test-issues.txt"),
202		exclude("gles31-spec-issues.txt"),
203		exclude("gles31-temp-excluded.txt"),
204	]
205MASTER_GLES31_PKG				= Package(module = GLES31_MODULE, configurations = [
206		# Master
207		Configuration(name			= "master",
208					  glconfig		= "rgba8888d24s8ms0",
209					  rotation		= "unspecified",
210					  surfacetype	= "window",
211					  required		= True,
212					  filters		= MASTER_GLES31_COMMON_FILTERS,
213					  runtime		= "1h40m",
214					  runByDefault		= False),
215		Configuration(name			= "master-2020-03-01",
216					  glconfig		= "rgba8888d24s8ms0",
217					  rotation		= "unspecified",
218					  surfacetype	= "window",
219					  required		= True,
220					  filters		= [include("gles31-master-2020-03-01.txt")],
221					  runtime		= "1h40m"),
222		Configuration(name			= "master-2021-03-01",
223					  glconfig		= "rgba8888d24s8ms0",
224					  rotation		= "unspecified",
225					  surfacetype	= "window",
226					  required		= True,
227					  filters		= MASTER_GLES31_COMMON_FILTERS + [exclude("gles31-master-2020-03-01.txt")],
228					  runtime		= "10m"),
229
230		# Rotations
231		Configuration(name			= "rotate-portrait",
232					  glconfig		= "rgba8888d24s8ms0",
233					  rotation		= "0",
234					  surfacetype	= "window",
235					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
236					  runtime		= "1m30s"),
237		Configuration(name			= "rotate-landscape",
238					  glconfig		= "rgba8888d24s8ms0",
239					  rotation		= "90",
240					  surfacetype	= "window",
241					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
242					  runtime		= "1m30s"),
243		Configuration(name			= "rotate-reverse-portrait",
244					  glconfig		= "rgba8888d24s8ms0",
245					  rotation		= "180",
246					  surfacetype	= "window",
247					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
248					  runtime		= "1m30s"),
249		Configuration(name			= "rotate-reverse-landscape",
250					  glconfig		= "rgba8888d24s8ms0",
251					  rotation		= "270",
252					  surfacetype	= "window",
253					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
254					  runtime		= "1m30s"),
255
256		# MSAA
257		Configuration(name			= "multisample",
258					  glconfig		= "rgba8888d24s8ms4",
259					  rotation		= "unspecified",
260					  surfacetype	= "window",
261					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-multisample.txt")],
262					  runtime		= "2m"),
263
264		# Pixel format
265		Configuration(name			= "565-no-depth-no-stencil",
266					  glconfig		= "rgb565d0s0ms0",
267					  rotation		= "unspecified",
268					  surfacetype	= "window",
269					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-pixelformat.txt")],
270					  runtime		= "1m"),
271	])
272
273MASTER_VULKAN_FILTERS			= [
274		include("vk-master.txt"),
275		exclude("vk-not-applicable.txt"),
276		exclude("vk-excluded-tests.txt"),
277		exclude("vk-test-issues.txt"),
278		exclude("vk-waivers.txt"),
279		exclude("vk-temp-excluded.txt"),
280	]
281MASTER_VULKAN_PKG				= Package(module = VULKAN_MODULE, configurations = [
282		Configuration(name			= "master",
283					  filters		= MASTER_VULKAN_FILTERS,
284					  runtime		= "2h39m",
285					  runByDefault		= False),
286		Configuration(name			= "master-2019-03-01",
287					  filters		= [include("vk-master-2019-03-01.txt")],
288					  runtime		= "2h29m"),
289		Configuration(name			= "master-2020-03-01",
290					  filters		= [include("vk-master-2020-03-01.txt")],
291					  runtime		= "2h29m"),
292		Configuration(name			= "master-2021-03-01",
293					  filters		= MASTER_VULKAN_FILTERS + [exclude("vk-master-2019-03-01.txt"), exclude("vk-master-2020-03-01.txt")],
294					  runtime		= "10m"),
295		Configuration(name			= "incremental-deqp",
296					  filters		= [include("vk-incremental-deqp.txt")],
297					  runtime		= "5m",
298					  runByDefault		= False),
299	])
300
301MUSTPASS_LISTS				= [
302		Mustpass(project = CTS_PROJECT, version = "master",		packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG, MASTER_VULKAN_PKG])
303	]
304
305if __name__ == "__main__":
306	genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, parseBuildConfigFromCmdLineArgs())
307