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
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# Lollipop
57
58LMP_GLES3_PKG					= Package(module = GLES3_MODULE, configurations = [
59		Configuration(name			= "master",
60					  glconfig		= "rgba8888d24s8ms0",
61					  rotation		= "unspecified",
62					  surfacetype	= "window",
63					  filters		= [include("es30-lmp.txt")]),
64	])
65LMP_GLES31_PKG					= Package(module = GLES31_MODULE, configurations = [
66		Configuration(name			= "master",
67					  glconfig		= "rgba8888d24s8ms0",
68					  rotation		= "unspecified",
69					  surfacetype	= "window",
70					  filters		= [include("es31-lmp.txt")]),
71	])
72
73# Lollipop MR1
74
75LMP_MR1_GLES3_PKG				= Package(module = GLES3_MODULE, configurations = [
76		Configuration(name			= "master",
77					  glconfig		= "rgba8888d24s8ms0",
78					  rotation		= "unspecified",
79					  surfacetype	= "window",
80					  filters		= [include("es30-lmp-mr1.txt")]),
81	])
82LMP_MR1_GLES31_PKG				= Package(module = GLES31_MODULE, configurations = [
83		Configuration(name			= "master",
84					  glconfig		= "rgba8888d24s8ms0",
85					  rotation		= "unspecified",
86					  surfacetype	= "window",
87					  filters		= [include("es31-lmp-mr1.txt")]),
88	])
89
90# Marshmallow
91
92MNC_EGL_PKG						= Package(module = EGL_MODULE, configurations = [
93		# Master
94		Configuration(name			= "master",
95					  glconfig		= "rgba8888d24s8ms0",
96					  rotation		= "unspecified",
97					  surfacetype	= "window",
98					  filters		= [include("egl-master.txt")]),
99	])
100MNC_GLES2_PKG					= Package(module = GLES2_MODULE, configurations = [
101		# Master
102		Configuration(name			= "master",
103					  glconfig		= "rgba8888d24s8ms0",
104					  rotation		= "unspecified",
105					  surfacetype	= "window",
106					  filters		= [include("gles2-master.txt")]),
107	])
108MNC_GLES3_PKG					= Package(module = GLES3_MODULE, configurations = [
109		# Master
110		Configuration(name			= "master",
111					  glconfig		= "rgba8888d24s8ms0",
112					  rotation		= "unspecified",
113					  surfacetype	= "window",
114					  filters		= [include("gles3-master.txt")]),
115		# Rotations
116		Configuration(name			= "rotate-portrait",
117					  glconfig		= "rgba8888d24s8ms0",
118					  rotation		= "0",
119					  surfacetype	= "window",
120					  filters		= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
121		Configuration(name			= "rotate-landscape",
122					  glconfig		= "rgba8888d24s8ms0",
123					  rotation		= "90",
124					  surfacetype	= "window",
125					  filters		= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
126		Configuration(name			= "rotate-reverse-portrait",
127					  glconfig		= "rgba8888d24s8ms0",
128					  rotation		= "180",
129					  surfacetype	= "window",
130					  filters		= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
131		Configuration(name			= "rotate-reverse-landscape",
132					  glconfig		= "rgba8888d24s8ms0",
133					  rotation		= "270",
134					  surfacetype	= "window",
135					  filters		= [include("gles3-master.txt"), include("gles3-rotation.txt")]),
136
137		# MSAA
138		Configuration(name			= "multisample",
139					  glconfig		= "rgba8888d24s8ms4",
140					  rotation		= "unspecified",
141					  surfacetype	= "window",
142					  filters		= [include("gles3-master.txt"),
143									   include("gles3-multisample.txt"),
144									   exclude("gles3-multisample-issues.txt")]),
145
146		# Pixel format
147		Configuration(name			= "565-no-depth-no-stencil",
148					  glconfig		= "rgb565d0s0ms0",
149					  rotation		= "unspecified",
150					  surfacetype	= "window",
151					  filters		= [include("gles3-master.txt"),
152									   include("gles3-pixelformat.txt"),
153									   exclude("gles3-pixelformat-issues.txt")]),
154	])
155MNC_GLES31_PKG					= Package(module = GLES31_MODULE, configurations = [
156		# Master
157		Configuration(name			= "master",
158					  glconfig		= "rgba8888d24s8ms0",
159					  rotation		= "unspecified",
160					  surfacetype	= "window",
161					  filters		= [include("gles31-master.txt")]),
162
163		# Rotations
164		Configuration(name			= "rotate-portrait",
165					  glconfig		= "rgba8888d24s8ms0",
166					  rotation		= "0",
167					  surfacetype	= "window",
168					  filters		= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
169		Configuration(name			= "rotate-landscape",
170					  glconfig		= "rgba8888d24s8ms0",
171					  rotation		= "90",
172					  surfacetype	= "window",
173					  filters		= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
174		Configuration(name			= "rotate-reverse-portrait",
175					  glconfig		= "rgba8888d24s8ms0",
176					  rotation		= "180",
177					  surfacetype	= "window",
178					  filters		= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
179		Configuration(name			= "rotate-reverse-landscape",
180					  glconfig		= "rgba8888d24s8ms0",
181					  rotation		= "270",
182					  surfacetype	= "window",
183					  filters		= [include("gles31-master.txt"), include("gles31-rotation.txt")]),
184
185		# MSAA
186		Configuration(name			= "multisample",
187					  glconfig		= "rgba8888d24s8ms4",
188					  rotation		= "unspecified",
189					  surfacetype	= "window",
190					  filters		= [include("gles31-master.txt"), include("gles31-multisample.txt")]),
191
192		# Pixel format
193		Configuration(name			= "565-no-depth-no-stencil",
194					  glconfig		= "rgb565d0s0ms0",
195					  rotation		= "unspecified",
196					  surfacetype	= "window",
197					  filters		= [include("gles31-master.txt"), include("gles31-pixelformat.txt")]),
198	])
199
200# Master
201
202MASTER_EGL_COMMON_FILTERS		= [include("egl-master.txt"),
203								   exclude("egl-test-issues.txt"),
204								   exclude("egl-internal-api-tests.txt")]
205MASTER_EGL_PKG					= Package(module = EGL_MODULE, configurations = [
206		# Master
207		Configuration(name			= "master",
208					  glconfig		= "rgba8888d24s8ms0",
209					  rotation		= "unspecified",
210					  surfacetype	= "window",
211					  filters		= MASTER_EGL_COMMON_FILTERS,
212				      runtime 		= "24m"),
213	])
214
215MASTER_GLES2_COMMON_FILTERS		= [
216		include("gles2-master.txt"),
217		exclude("gles2-test-issues.txt"),
218		exclude("gles2-failures.txt")
219	]
220MASTER_GLES2_PKG				= Package(module = GLES2_MODULE, configurations = [
221		# Master
222		Configuration(name			= "master",
223					  glconfig		= "rgba8888d24s8ms0",
224					  rotation		= "unspecified",
225					  surfacetype	= "window",
226					  filters		= MASTER_GLES2_COMMON_FILTERS,
227					  runtime 		= "40m"),
228	])
229
230MASTER_GLES3_COMMON_FILTERS		= [
231		include("gles3-master.txt"),
232		exclude("gles3-hw-issues.txt"),
233		exclude("gles3-driver-issues.txt"),
234		exclude("gles3-test-issues.txt"),
235		exclude("gles3-spec-issues.txt")
236	]
237MASTER_GLES3_PKG				= Package(module = GLES3_MODULE, configurations = [
238		# Master
239		Configuration(name			= "master",
240					  glconfig		= "rgba8888d24s8ms0",
241					  rotation		= "unspecified",
242					  surfacetype	= "window",
243					  filters		= MASTER_GLES3_COMMON_FILTERS,
244					  runtime		= "1h15m"),
245		# Rotations
246		Configuration(name			= "rotate-portrait",
247					  glconfig		= "rgba8888d24s8ms0",
248					  rotation		= "0",
249					  surfacetype	= "window",
250					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
251					  runtime		= "7m"),
252		Configuration(name			= "rotate-landscape",
253					  glconfig		= "rgba8888d24s8ms0",
254					  rotation		= "90",
255					  surfacetype	= "window",
256					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
257					  runtime		= "7m"),
258		Configuration(name			= "rotate-reverse-portrait",
259					  glconfig		= "rgba8888d24s8ms0",
260					  rotation		= "180",
261					  surfacetype	= "window",
262					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
263					  runtime		= "7m"),
264		Configuration(name			= "rotate-reverse-landscape",
265					  glconfig		= "rgba8888d24s8ms0",
266					  rotation		= "270",
267					  surfacetype	= "window",
268					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")],
269					  runtime		= "7m"),
270
271		# MSAA
272		Configuration(name			= "multisample",
273					  glconfig		= "rgba8888d24s8ms4",
274					  rotation		= "unspecified",
275					  surfacetype	= "window",
276					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-multisample.txt"),
277																	 exclude("gles3-multisample-issues.txt")],
278					  runtime		= "10m"),
279
280		# Pixel format
281		Configuration(name			= "565-no-depth-no-stencil",
282					  glconfig		= "rgb565d0s0ms0",
283					  rotation		= "unspecified",
284					  surfacetype	= "window",
285					  filters		= MASTER_GLES3_COMMON_FILTERS + [include("gles3-pixelformat.txt"),
286																	 exclude("gles3-pixelformat-issues.txt")],
287					  runtime		= "10m"),
288	])
289
290MASTER_GLES31_COMMON_FILTERS	= [
291		include("gles31-master.txt"),
292		exclude("gles31-hw-issues.txt"),
293		exclude("gles31-driver-issues.txt"),
294		exclude("gles31-test-issues.txt"),
295		exclude("gles31-spec-issues.txt"),
296	]
297MASTER_GLES31_PKG				= Package(module = GLES31_MODULE, configurations = [
298		# Master
299		Configuration(name			= "master",
300					  glconfig		= "rgba8888d24s8ms0",
301					  rotation		= "unspecified",
302					  surfacetype	= "window",
303					  filters		= MASTER_GLES31_COMMON_FILTERS,
304					  runtime 		= "7h30m"),
305
306		# Rotations
307		Configuration(name			= "rotate-portrait",
308					  glconfig		= "rgba8888d24s8ms0",
309					  rotation		= "0",
310					  surfacetype	= "window",
311					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
312					  runtime		= "1m30s"),
313		Configuration(name			= "rotate-landscape",
314					  glconfig		= "rgba8888d24s8ms0",
315					  rotation		= "90",
316					  surfacetype	= "window",
317					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
318					  runtime		= "1m30s"),
319		Configuration(name			= "rotate-reverse-portrait",
320					  glconfig		= "rgba8888d24s8ms0",
321					  rotation		= "180",
322					  surfacetype	= "window",
323					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
324					  runtime		= "1m30s"),
325		Configuration(name			= "rotate-reverse-landscape",
326					  glconfig		= "rgba8888d24s8ms0",
327					  rotation		= "270",
328					  surfacetype	= "window",
329					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")],
330					  runtime		= "1m30s"),
331
332		# MSAA
333		Configuration(name			= "multisample",
334					  glconfig		= "rgba8888d24s8ms4",
335					  rotation		= "unspecified",
336					  surfacetype	= "window",
337					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-multisample.txt")],
338					  runtime		= "2m"),
339
340		# Pixel format
341		Configuration(name			= "565-no-depth-no-stencil",
342					  glconfig		= "rgb565d0s0ms0",
343					  rotation		= "unspecified",
344					  surfacetype	= "window",
345					  filters		= MASTER_GLES31_COMMON_FILTERS + [include("gles31-pixelformat.txt")],
346					  runtime		= "1m"),
347	])
348
349MASTER_VULKAN_FILTERS			= [
350		include("vulkan-master.txt"),
351		exclude("vulkan-not-applicable.txt"),
352		exclude("vulkan-test-issues.txt"),
353		exclude("vulkan-hw-issues.txt")
354	]
355MASTER_VULKAN_PKG				= Package(module = VULKAN_MODULE, configurations = [
356		Configuration(name			= "master",
357					  filters		= MASTER_VULKAN_FILTERS,
358					  runtime		= "3h45m"),
359	])
360
361MUSTPASS_LISTS				= [
362		Mustpass(project = CTS_PROJECT, version = "lmp",		packages = [LMP_GLES3_PKG, LMP_GLES31_PKG]),
363		Mustpass(project = CTS_PROJECT, version = "lmp-mr1",	packages = [LMP_MR1_GLES3_PKG, LMP_MR1_GLES31_PKG]),
364		Mustpass(project = CTS_PROJECT, version = "mnc",		packages = [MNC_EGL_PKG, MNC_GLES2_PKG, MNC_GLES3_PKG, MNC_GLES31_PKG]),
365		Mustpass(project = CTS_PROJECT, version = "master",		packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG, MASTER_VULKAN_PKG])
366	]
367
368BUILD_CONFIG				= getBuildConfig(DEFAULT_BUILD_DIR, DEFAULT_TARGET, "Debug")
369
370if __name__ == "__main__":
371	genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, BUILD_CONFIG)
372