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 ctsbuild.common import DEQP_DIR 24from ctsbuild.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# Main 57 58MAIN_EGL_COMMON_FILTERS = [include("egl-main.txt"), 59 exclude("egl-test-issues.txt"), 60 exclude("egl-manual-robustness.txt"), 61 exclude("egl-driver-issues.txt")] 62 63# Android CTS is not using EGL test list for year 2021 64MAIN_EGL_PKG = Package(module = EGL_MODULE, configurations = [ 65 Configuration(name = "main-2020-03-01", 66 glconfig = "rgba8888d24s8ms0", 67 rotation = "unspecified", 68 surfacetype = "window", 69 required = True, 70 filters = [include("egl-main-2020-03-01.txt")], 71 runtime = "23m"), 72 Configuration(name = "main-2022-03-01", 73 glconfig = "rgba8888d24s8ms0", 74 rotation = "unspecified", 75 surfacetype = "window", 76 required = True, 77 filters = [include("egl-main-2022-03-01.txt")], 78 runtime = "5m"), 79 Configuration(name = "main-2023-03-01", 80 glconfig = "rgba8888d24s8ms0", 81 rotation = "unspecified", 82 surfacetype = "window", 83 required = True, 84 filters = [include("egl-main-2023-03-01.txt")], 85 runtime = "5m"), 86 Configuration(name = "main-2024-03-01", 87 glconfig = "rgba8888d24s8ms0", 88 rotation = "unspecified", 89 surfacetype = "window", 90 required = True, 91 filters = [include("egl-main-2024-03-01.txt")], 92 runtime = "5m"), 93 Configuration(name = "main-2025-03-01", 94 glconfig = "rgba8888d24s8ms0", 95 rotation = "unspecified", 96 surfacetype = "window", 97 required = True, 98 filters = MAIN_EGL_COMMON_FILTERS + [exclude("egl-main-2020-03-01.txt", "egl-main-2022-03-01.txt", "egl-main-2023-03-01.txt", "egl-main-2024-03-01.txt")], 99 runtime = "5m"), 100 101 # Note: There are no incremental deqp testlists for EGL since these tests do not work with 102 # deqp-binary. 103 ]) 104 105MAIN_GLES2_COMMON_FILTERS = [ 106 include("gles2-main.txt"), 107 exclude("gles2-test-issues.txt"), 108 exclude("gles2-failures.txt"), 109 ] 110MAIN_GLES2_PKG = Package(module = GLES2_MODULE, configurations = [ 111 Configuration(name = "main-2020-03-01", 112 glconfig = "rgba8888d24s8ms0", 113 rotation = "unspecified", 114 surfacetype = "window", 115 required = True, 116 filters = [include("gles2-main-2020-03-01.txt")], 117 runtime = "46m"), 118 Configuration(name = "main-2021-03-01", 119 glconfig = "rgba8888d24s8ms0", 120 rotation = "unspecified", 121 surfacetype = "window", 122 required = True, 123 filters = [include("gles2-main-2021-03-01.txt")], 124 runtime = "10m"), 125 Configuration(name = "main-2022-03-01", 126 glconfig = "rgba8888d24s8ms0", 127 rotation = "unspecified", 128 surfacetype = "window", 129 required = True, 130 filters = [include("gles2-main-2022-03-01.txt")], 131 runtime = "10m"), 132 Configuration(name = "main-2023-03-01", 133 glconfig = "rgba8888d24s8ms0", 134 rotation = "unspecified", 135 surfacetype = "window", 136 required = True, 137 filters = [include("gles2-main-2023-03-01.txt")], 138 runtime = "10m"), 139 Configuration(name = "main-2024-03-01", 140 glconfig = "rgba8888d24s8ms0", 141 rotation = "unspecified", 142 surfacetype = "window", 143 required = True, 144 filters = [include("gles2-main-2024-03-01.txt")], 145 runtime = "10m"), 146 Configuration(name = "main-2025-03-01", 147 glconfig = "rgba8888d24s8ms0", 148 rotation = "unspecified", 149 surfacetype = "window", 150 required = True, 151 filters = MAIN_GLES2_COMMON_FILTERS + [exclude("gles2-main-2020-03-01.txt", "gles2-main-2021-03-01.txt", "gles2-main-2022-03-01.txt", "gles2-main-2023-03-01.txt", "gles2-main-2024-03-01.txt")], 152 runtime = "10m"), 153 154 # Incremental deqp baseline 155 Configuration(name = "incremental-deqp-baseline", 156 filters = [include("gles2-main-2020-03-01.txt"), exclude("gles2-incremental-deqp-excluded.txt")], 157 runtime = "5m", 158 runByDefault = False), 159 ]) 160 161MAIN_GLES3_COMMON_FILTERS = [ 162 include("gles3-main.txt"), 163 exclude("gles3-hw-issues.txt"), 164 exclude("gles3-driver-issues.txt"), 165 exclude("gles3-test-issues.txt"), 166 exclude("gles3-spec-issues.txt"), 167 exclude("gles3-waivers.txt"), 168 ] 169MAIN_GLES3_PKG = Package(module = GLES3_MODULE, configurations = [ 170 # Main 171 Configuration(name = "main-2020-03-01", 172 glconfig = "rgba8888d24s8ms0", 173 rotation = "unspecified", 174 surfacetype = "window", 175 required = True, 176 filters = [include("gles3-main-2020-03-01.txt")], 177 runtime = "1h50m"), 178 Configuration(name = "main-2021-03-01", 179 glconfig = "rgba8888d24s8ms0", 180 rotation = "unspecified", 181 surfacetype = "window", 182 required = True, 183 filters = [include("gles3-main-2021-03-01.txt")], 184 runtime = "10m"), 185 Configuration(name = "main-2022-03-01", 186 glconfig = "rgba8888d24s8ms0", 187 rotation = "unspecified", 188 surfacetype = "window", 189 required = True, 190 filters = [include("gles3-main-2022-03-01.txt")], 191 runtime = "10m"), 192 Configuration(name = "main-2023-03-01", 193 glconfig = "rgba8888d24s8ms0", 194 rotation = "unspecified", 195 surfacetype = "window", 196 required = True, 197 filters = [include("gles3-main-2023-03-01.txt")], 198 runtime = "10m"), 199 Configuration(name = "main-2024-03-01", 200 glconfig = "rgba8888d24s8ms0", 201 rotation = "unspecified", 202 surfacetype = "window", 203 required = True, 204 filters = [include("gles3-main-2024-03-01.txt")], 205 runtime = "10m"), 206 Configuration(name = "main-2025-03-01", 207 glconfig = "rgba8888d24s8ms0", 208 rotation = "unspecified", 209 surfacetype = "window", 210 required = True, 211 filters = MAIN_GLES3_COMMON_FILTERS + [exclude("gles3-main-2020-03-01.txt", "gles3-main-2021-03-01.txt", "gles3-main-2022-03-01.txt", "gles3-main-2023-03-01.txt", "gles3-main-2024-03-01.txt")], 212 runtime = "10m"), 213 # Rotations 214 Configuration(name = "rotate-portrait", 215 glconfig = "rgba8888d24s8ms0", 216 rotation = "0", 217 surfacetype = "window", 218 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")], 219 runtime = "1m"), 220 Configuration(name = "rotate-landscape", 221 glconfig = "rgba8888d24s8ms0", 222 rotation = "90", 223 surfacetype = "window", 224 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")], 225 runtime = "1m"), 226 Configuration(name = "rotate-reverse-portrait", 227 glconfig = "rgba8888d24s8ms0", 228 rotation = "180", 229 surfacetype = "window", 230 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")], 231 runtime = "1m"), 232 Configuration(name = "rotate-reverse-landscape", 233 glconfig = "rgba8888d24s8ms0", 234 rotation = "270", 235 surfacetype = "window", 236 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")], 237 runtime = "1m"), 238 239 # MSAA 240 Configuration(name = "multisample", 241 glconfig = "rgba8888d24s8ms4", 242 rotation = "unspecified", 243 surfacetype = "window", 244 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-multisample.txt"), 245 exclude("gles3-multisample-issues.txt")], 246 runtime = "1m"), 247 248 # Pixel format 249 Configuration(name = "565-no-depth-no-stencil", 250 glconfig = "rgb565d0s0ms0", 251 rotation = "unspecified", 252 surfacetype = "window", 253 filters = MAIN_GLES3_COMMON_FILTERS + [include("gles3-pixelformat.txt"), 254 exclude("gles3-pixelformat-issues.txt")], 255 runtime = "1m"), 256 # Incremental dEQP 257 Configuration(name = "incremental-deqp", 258 filters = [include("gles3-incremental-deqp.txt")], 259 runtime = "5m", 260 runByDefault = False), 261 Configuration(name = "incremental-deqp-baseline", 262 filters = [include("gles3-main-2020-03-01.txt"), exclude("gles3-incremental-deqp-excluded.txt")], 263 runtime = "5m", 264 runByDefault = False), 265 ]) 266 267MAIN_GLES31_COMMON_FILTERS = [ 268 include("gles31-main.txt"), 269 exclude("gles31-hw-issues.txt"), 270 exclude("gles31-driver-issues.txt"), 271 exclude("gles31-test-issues.txt"), 272 exclude("gles31-spec-issues.txt"), 273 exclude("gles31-waivers.txt"), 274 ] 275MAIN_GLES31_PKG = Package(module = GLES31_MODULE, configurations = [ 276 Configuration(name = "main-2020-03-01", 277 glconfig = "rgba8888d24s8ms0", 278 rotation = "unspecified", 279 surfacetype = "window", 280 required = True, 281 filters = [include("gles31-main-2020-03-01.txt")], 282 runtime = "1h40m"), 283 Configuration(name = "main-2021-03-01", 284 glconfig = "rgba8888d24s8ms0", 285 rotation = "unspecified", 286 surfacetype = "window", 287 required = True, 288 filters = [include("gles31-main-2021-03-01.txt")], 289 runtime = "10m"), 290 Configuration(name = "main-2022-03-01", 291 glconfig = "rgba8888d24s8ms0", 292 rotation = "unspecified", 293 surfacetype = "window", 294 required = True, 295 filters = [include("gles31-main-2022-03-01.txt")], 296 runtime = "10m"), 297 Configuration(name = "main-2023-03-01", 298 glconfig = "rgba8888d24s8ms0", 299 rotation = "unspecified", 300 surfacetype = "window", 301 required = True, 302 filters = [include("gles31-main-2023-03-01.txt")], 303 runtime = "10m"), 304 Configuration(name = "main-2024-03-01", 305 glconfig = "rgba8888d24s8ms0", 306 rotation = "unspecified", 307 surfacetype = "window", 308 required = True, 309 filters = [include("gles31-main-2024-03-01.txt")], 310 runtime = "10m"), 311 Configuration(name = "main-2025-03-01", 312 glconfig = "rgba8888d24s8ms0", 313 rotation = "unspecified", 314 surfacetype = "window", 315 required = True, 316 filters = MAIN_GLES31_COMMON_FILTERS + [exclude("gles31-main-2020-03-01.txt", "gles31-main-2021-03-01.txt", "gles31-main-2022-03-01.txt", "gles31-main-2023-03-01.txt", "gles31-main-2024-03-01.txt")], 317 runtime = "10m"), 318 # Rotations 319 Configuration(name = "rotate-portrait", 320 glconfig = "rgba8888d24s8ms0", 321 rotation = "0", 322 surfacetype = "window", 323 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")], 324 runtime = "1m30s"), 325 Configuration(name = "rotate-landscape", 326 glconfig = "rgba8888d24s8ms0", 327 rotation = "90", 328 surfacetype = "window", 329 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")], 330 runtime = "1m30s"), 331 Configuration(name = "rotate-reverse-portrait", 332 glconfig = "rgba8888d24s8ms0", 333 rotation = "180", 334 surfacetype = "window", 335 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")], 336 runtime = "1m30s"), 337 Configuration(name = "rotate-reverse-landscape", 338 glconfig = "rgba8888d24s8ms0", 339 rotation = "270", 340 surfacetype = "window", 341 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-rotation.txt")], 342 runtime = "1m30s"), 343 344 # MSAA 345 Configuration(name = "multisample", 346 glconfig = "rgba8888d24s8ms4", 347 rotation = "unspecified", 348 surfacetype = "window", 349 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-multisample.txt")], 350 runtime = "2m"), 351 352 # Pixel format 353 Configuration(name = "565-no-depth-no-stencil", 354 glconfig = "rgb565d0s0ms0", 355 rotation = "unspecified", 356 surfacetype = "window", 357 filters = MAIN_GLES31_COMMON_FILTERS + [include("gles31-pixelformat.txt")], 358 runtime = "1m"), 359 360 # Incremental deqp baseline 361 Configuration(name = "incremental-deqp-baseline", 362 filters = [include("gles31-main-2020-03-01.txt")], 363 runtime = "5m", 364 runByDefault = False), 365 ]) 366 367MAIN_VULKAN_FILTERS = [ 368 include("vk-main.txt"), 369 exclude("vk-not-applicable.txt"), 370 exclude("vk-excluded-tests.txt"), 371 exclude("vk-test-issues.txt"), 372 exclude("vk-waivers.txt"), 373 ] 374MAIN_VULKAN_PKG = Package(module = VULKAN_MODULE, configurations = [ 375 Configuration(name = "main-2019-03-01", 376 filters = [include("vk-main-2019-03-01.txt")], 377 runtime = "2h29m", 378 listOfGroupsToSplit = ["dEQP-VK"]), 379 Configuration(name = "main-2020-03-01", 380 filters = [include("vk-main-2020-03-01.txt")], 381 runtime = "2h29m", 382 listOfGroupsToSplit = ["dEQP-VK"]), 383 Configuration(name = "main-2021-03-01", 384 filters = [include("vk-main-2021-03-01.txt")], 385 runtime = "2h29m", 386 listOfGroupsToSplit = ["dEQP-VK"]), 387 Configuration(name = "main-2022-03-01", 388 filters = [include("vk-main-2022-03-01.txt")], 389 runtime = "10m", 390 listOfGroupsToSplit = ["dEQP-VK", "dEQP-VK.pipeline", "dEQP-VK.image", "dEQP-VK.shader_object"]), 391 Configuration(name = "main-2023-03-01", 392 filters = [include("vk-main-2023-03-01-part1.txt", "vk-main-2023-03-01-part2.txt")], 393 runtime = "10m", 394 listOfGroupsToSplit = ["dEQP-VK", "dEQP-VK.pipeline", "dEQP-VK.image", "dEQP-VK.shader_object"]), 395 Configuration(name = "main-2024-03-01", 396 filters = [include("vk-main-2024-03-01.txt")], 397 runtime = "10m", 398 listOfGroupsToSplit = ["dEQP-VK", "dEQP-VK.pipeline", "dEQP-VK.image", "dEQP-VK.shader_object"]), 399 Configuration(name = "main-2025-03-01", 400 filters = MAIN_VULKAN_FILTERS + [exclude("vk-main-2019-03-01.txt", "vk-main-2020-03-01.txt", "vk-main-2021-03-01.txt", "vk-main-2022-03-01.txt", "vk-main-2023-03-01-part1.txt", "vk-main-2023-03-01-part2.txt", "vk-main-2024-03-01.txt")], 401 runtime = "10m", 402 listOfGroupsToSplit = ["dEQP-VK", "dEQP-VK.pipeline", "dEQP-VK.image", "dEQP-VK.shader_object"]), 403 Configuration(name = "incremental-deqp", 404 filters = [include("vk-incremental-deqp.txt")], 405 runtime = "5m", 406 runByDefault = False, 407 listOfGroupsToSplit = []), 408 Configuration(name = "incremental-deqp-baseline", 409 filters = [include("vk-main-2019-03-01.txt"), 410 exclude("vk-incremental-deqp-excluded.txt")], 411 runtime = "2h29m", 412 runByDefault = False, 413 listOfGroupsToSplit = []), 414 ]) 415 416MUSTPASS_LISTS = [ 417 Mustpass(project = CTS_PROJECT, version = "main", packages = [MAIN_EGL_PKG, MAIN_GLES2_PKG, MAIN_GLES3_PKG, MAIN_GLES31_PKG, MAIN_VULKAN_PKG]) 418 ] 419 420if __name__ == "__main__": 421 genMustpassLists(MUSTPASS_LISTS, ANY_GENERATOR, parseBuildConfigFromCmdLineArgs()) 422