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