1# Copyright 2015 The ANGLE Project Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//build/config/chromecast_build.gni") 6import("//testing/test.gni") 7import("../../gni/angle.gni") 8import("angle_unittests.gni") 9 10declare_args() { 11 # Don't build dEQP by default. 12 build_angle_deqp_tests = false 13 build_angle_gles1_conform_tests = false 14 build_angle_trace_perf_tests = false 15 build_angle_perftests = 16 is_win || is_linux || is_chromeos || is_android || is_apple || is_fuchsia 17} 18 19if (is_android) { 20 android_library("native_test_java") { 21 testonly = true 22 sources = [ 23 "test_utils/runner/android/java/src/com/android/angle/test/AngleNativeTest.java", 24 "test_utils/runner/android/java/src/com/android/angle/test/AngleUnitTestActivity.java", 25 "test_utils/runner/android/java/src/com/android/angle/test/TestStatusReporter.java", 26 ] 27 28 deps = [ 29 "//build/android:native_libraries_java", 30 "//build/android/gtest_apk:native_test_instrumentation_test_runner_java", 31 ] 32 } 33 34 angle_source_set("native_test_support_android") { 35 testonly = true 36 sources = [ "test_utils/runner/android/AngleNativeTest.cpp" ] 37 deps = [ "$angle_root:angle_common" ] 38 } 39} 40 41angle_test("test_utils_unittest_helper") { 42 sources = [ 43 "../../util/test_utils_unittest_helper.cpp", 44 "../../util/test_utils_unittest_helper.h", 45 "test_utils/angle_test_instantiate.h", 46 "test_utils/runner/TestSuite_unittest.cpp", 47 ] 48} 49 50test_expectations_sources = [ 51 "test_expectations/GPUTestConfig.cpp", 52 "test_expectations/GPUTestConfig.h", 53 "test_expectations/GPUTestExpectationsParser.cpp", 54 "test_expectations/GPUTestExpectationsParser.h", 55] 56if (is_mac) { 57 test_expectations_sources_mac = [ 58 "test_expectations/GPUTestConfig_mac.mm", 59 "test_expectations/GPUTestConfig_mac.h", 60 ] 61} 62if (is_ios) { 63 test_expectation_sources_ios = [ 64 "test_expectations/GPUTestConfig_ios.mm", 65 "test_expectations/GPUTestConfig_ios.h", 66 ] 67} 68 69angle_static_library("angle_test_expectations") { 70 public_deps = [ 71 "$angle_root:angle_common", 72 "$angle_root:angle_gpu_info_util", 73 ] 74 sources = test_expectations_sources 75 if (is_mac) { 76 sources += test_expectations_sources_mac 77 frameworks = [ "Cocoa.framework" ] 78 } 79 if (is_ios) { 80 sources += test_expectation_sources_ios 81 frameworks = [ "Foundation.framework" ] 82 } 83} 84 85config("angle_common_test_utils_config") { 86 include_dirs = [ "." ] 87} 88 89template("angle_common_test_utils") { 90 assert(defined(invoker.angle_util)) 91 angle_source_set(target_name) { 92 testonly = true 93 if (is_ios) { 94 # shared libraries are hidden inside ios_framework_bundle, but we include headers from them 95 check_includes = false 96 } 97 public_configs = [ 98 ":angle_common_test_utils_config", 99 "$angle_root:library_name_config", 100 ] 101 public_deps = [ 102 "$angle_root:angle_common", 103 "$angle_root:angle_gpu_info_util", 104 "$angle_root/util:${invoker.angle_util}", 105 "//testing/gmock", 106 "//testing/gtest", 107 "//third_party/googletest:gmock", 108 "//third_party/googletest:gtest", 109 ] 110 sources = [ 111 "$angle_root/third_party/renderdoc/src/renderdoc_app.h", 112 "test_utils/RenderDoc.cpp", 113 "test_utils/RenderDoc.h", 114 "test_utils/angle_test_configs.cpp", 115 "test_utils/angle_test_configs.h", 116 "test_utils/angle_test_instantiate.cpp", 117 "test_utils/angle_test_instantiate.h", 118 "test_utils/angle_test_platform.cpp", 119 "test_utils/angle_test_platform.h", 120 "test_utils/gl_raii.h", 121 ] 122 if (is_apple) { 123 sources += [ 124 "test_utils/angle_test_instantiate_apple.h", 125 "test_utils/angle_test_instantiate_apple.mm", 126 ] 127 } 128 data_deps = [] 129 if (angle_enable_vulkan_validation_layers) { 130 data_deps += [ "$angle_root/src/common/vulkan:vulkan_validation_layers" ] 131 } 132 } 133} 134 135angle_common_test_utils("angle_common_test_utils_shared") { 136 angle_util = "angle_util" 137} 138 139angle_common_test_utils("angle_common_test_utils_static") { 140 angle_util = "angle_util_static" 141} 142 143# We use this in the restricted trace tests to load driver info. 144angle_test("angle_system_info_test") { 145 sources = [ "angle_system_info_tests_main.cpp" ] 146 deps = [ 147 "$angle_root:angle_gpu_info_util", 148 "$angle_root:libEGL_static", 149 "$angle_root:libGLESv2_static", 150 "$angle_root/util:angle_util_static", 151 ] 152} 153 154angle_test("angle_unittests") { 155 sources = angle_unittests_sources + [ "angle_unittest_main.cpp" ] 156 157 # Compiler tests frequently require either TranslatorGLSL or TranslatorESSL. Build them only if 158 # both are enabled. 159 if (angle_enable_essl && angle_enable_glsl) { 160 sources += angle_unittests_compiler_tests_sources 161 162 if (is_apple) { 163 sources += angle_unittests_glsl_mac_sources 164 } 165 } 166 167 defines = [] 168 169 if (angle_enable_hlsl) { 170 sources += angle_unittests_hlsl_sources 171 defines += [ "ANGLE_ENABLE_HLSL" ] 172 } 173 174 if (angle_enable_gl) { 175 sources += angle_unittests_gl_sources 176 } 177 178 deps = [ 179 ":angle_test_expectations", 180 "$angle_root:angle_json_serializer", 181 "$angle_root:libANGLE", 182 "$angle_root:libEGL_static", 183 "$angle_root:libGLESv2_static", 184 "$angle_root:libfeature_support", 185 "$angle_root:preprocessor", 186 "$angle_root:translator", 187 "$angle_root/util:angle_util_static", 188 ] 189 190 if (!is_android && !is_fuchsia) { 191 # SystemUtils.RunApp, the only unittest using a helper binary, is not supported on these 192 # platforms yet. 193 data_deps = [ ":test_utils_unittest_helper" ] 194 } 195} 196 197if (is_win || is_linux || is_chromeos || is_android || is_fuchsia || is_apple) { 198 import("angle_end2end_tests.gni") 199 200 angle_test("angle_end2end_tests") { 201 include_dirs = [ "." ] 202 203 sources = angle_end2end_tests_sources + [ "angle_end2end_tests_main.cpp" ] 204 libs = [] 205 data = [ "angle_end2end_tests_expectations.txt" ] 206 207 if (is_mac) { 208 sources += angle_end2end_tests_mac_sources 209 frameworks = [ 210 "CoreFoundation.framework", 211 "IOSurface.framework", 212 ] 213 ldflags = [ 214 "-weak_framework", 215 "Metal", 216 ] 217 cflags_objcc = [ 218 "-Wno-nullability-completeness", 219 "-Wno-unguarded-availability", 220 ] 221 } 222 if (is_win) { 223 sources += angle_end2end_tests_win_sources 224 } 225 if (angle_use_x11) { 226 sources += angle_end2end_tests_x11_sources 227 } 228 229 configs += [ "${angle_root}:libANGLE_config" ] 230 231 deps = [ 232 ":angle_common_test_utils_shared", 233 "$angle_root:angle_image_util", 234 ] 235 236 if (is_android) { 237 include_dirs += [ "${android_ndk_root}/sysroot/usr/includes" ] 238 } 239 240 data_deps = [ 241 "$angle_root:libEGL", 242 "$angle_root:libGLESv1_CM", 243 "$angle_root:libGLESv2", 244 ] 245 246 if (angle_enable_vulkan) { 247 sources += [ 248 "gl_tests/VulkanExternalImageTest.cpp", 249 "test_utils/VulkanExternalHelper.cpp", 250 "test_utils/VulkanExternalHelper.h", 251 ] 252 deps += [ "$angle_root/src/common/vulkan" ] 253 } 254 255 if (is_fuchsia) { 256 additional_manifest_fragments = [ 257 # TODO(crbug.com/1185811): Figure out why jit_capabilities is needed. 258 "//build/config/fuchsia/test/jit_capabilities.test-cmx", 259 260 "//build/config/fuchsia/test/present_view_capabilities.test-cmx", 261 "//build/config/fuchsia/test/vulkan_capabilities.test-cmx", 262 ] 263 } 264 265 if (is_ios) { 266 xcode_extra_attributes = { 267 SUPPORTS_MACCATALYST = "YES" 268 } 269 270 # Need to bundle the libraries inside the .app. 271 deps += [ 272 "$angle_root:libEGL", 273 "$angle_root:libGLESv1_CM", 274 "$angle_root:libGLESv2", 275 ] 276 } 277 } 278} 279 280if (is_win || is_linux || is_chromeos || is_android || is_fuchsia || is_apple) { 281 import("angle_white_box_tests.gni") 282 283 angle_test("angle_white_box_tests") { 284 include_dirs = [ "." ] 285 sources = angle_white_box_tests_sources + [ "angle_generic_tests_main.cpp" ] 286 287 if (is_win && angle_enable_d3d11) { 288 sources += angle_white_box_tests_win_sources 289 } 290 291 configs += [ "${angle_root}:libANGLE_config" ] 292 293 deps = [ 294 ":angle_common_test_utils_static", 295 "$angle_root:libANGLE", 296 "$angle_root:libEGL_static", 297 "$angle_root:libGLESv2_static", 298 "$angle_root:preprocessor", 299 "$angle_root:translator", 300 ] 301 302 deps += [ "${angle_root}:angle_gl_enum_utils" ] 303 304 if (angle_enable_vulkan) { 305 sources += angle_white_box_tests_vulkan_sources 306 deps += [ "$angle_root/src/common/vulkan:angle_vulkan_entry_points" ] 307 } 308 } 309} 310 311config("angle_maybe_has_histograms") { 312 if (angle_has_histograms) { 313 defines = [ "ANGLE_HAS_HISTOGRAMS" ] 314 include_dirs = [ "$root_gen_dir" ] 315 } 316} 317 318template("angle_perftests_common") { 319 assert(defined(invoker.test_utils)) 320 321 angle_source_set(target_name) { 322 testonly = true 323 if (is_ios) { 324 # shared libraries are hidden inside ios_framework_bundle, but we include headers from them 325 check_includes = false 326 } 327 sources = [ 328 "../third_party/trace_event/trace_event.h", 329 "perf_tests/ANGLEPerfTest.cpp", 330 "perf_tests/ANGLEPerfTest.h", 331 "perf_tests/ANGLEPerfTestArgs.cpp", 332 "perf_tests/ANGLEPerfTestArgs.h", 333 "perf_tests/DrawCallPerfParams.cpp", 334 "perf_tests/DrawCallPerfParams.h", 335 "perf_tests/third_party/perf/perf_result_reporter.cc", 336 "perf_tests/third_party/perf/perf_result_reporter.h", 337 "perf_tests/third_party/perf/perf_test.cc", 338 "perf_tests/third_party/perf/perf_test.h", 339 "test_utils/runner/HistogramWriter.h", 340 "test_utils/runner/TestSuite.h", 341 ] 342 public_deps = [ 343 "$angle_root/src/tests:angle_test_expectations", 344 "$angle_root/third_party/rapidjson:rapidjson", 345 "${invoker.test_utils}", 346 ] 347 public_configs += [ "${angle_root}:libANGLE_config" ] 348 } 349} 350 351angle_perftests_common("angle_perftests_shared") { 352 test_utils = ":angle_common_test_utils_shared" 353} 354 355angle_perftests_common("angle_perftests_static") { 356 test_utils = ":angle_common_test_utils_static" 357} 358 359if (is_win || is_linux || is_chromeos || is_android || is_apple) { 360 import("angle_perftests.gni") 361 362 # This test suite is for perf tests that use ANGLE's internals in some direct way. 363 angle_test("angle_white_box_perftests") { 364 include_dirs = [ "." ] 365 sources = 366 angle_white_box_perf_tests_sources + [ "angle_perftests_main.cpp" ] 367 368 deps = [ 369 ":angle_perftests_static", 370 "$angle_root:libANGLE", 371 "$angle_root:libEGL_static", 372 "$angle_root:libGLESv2_static", 373 ] 374 375 # These tests depend on vulkan_command_buffer_utils, which is 376 # not yet compatible with mac and vulkan display/headless backend. 377 if (angle_enable_vulkan && !angle_use_vulkan_display && !is_apple) { 378 sources += angle_white_box_perf_tests_vulkan_sources 379 deps += [ 380 "$angle_glslang_dir:glslang_lib_sources", 381 "$angle_root/src/common/vulkan:angle_vulkan_entry_points", 382 ] 383 } 384 } 385} 386 387if (build_angle_perftests) { 388 import("angle_perftests.gni") 389 390 config("angle_trace_perftests_config") { 391 if (build_angle_trace_perf_tests) { 392 defines = [ "ANGLE_TRACE_PERF_TESTS" ] 393 } 394 } 395 396 angle_source_set("angle_trace_perftests") { 397 testonly = true 398 399 if (build_angle_trace_perf_tests) { 400 # http://anglebug.com/6009: Traces with long shaders are hitting string literal 401 # limit in MSVC, so only compile them when using clang 402 assert(is_clang, "build_angle_trace_perf_tests requires is_clang") 403 404 if (is_ios) { 405 # shared libraries are hidden inside ios_framework_bundle, but we include headers from them 406 check_includes = false 407 } 408 sources = [ "perf_tests/TracePerfTest.cpp" ] 409 deps = [ 410 ":angle_perftests_shared", 411 "$angle_root:angle_compression", 412 "$angle_root/util:angle_png_utils", 413 "restricted_traces:angle_restricted_traces", 414 ] 415 public_configs = [ ":angle_trace_perftests_config" ] 416 suppressed_configs += 417 [ "$angle_root:constructor_and_destructor_warnings" ] 418 } 419 } 420 421 # This test suite is designed to run against a generic GL implementation. 422 angle_test("angle_perftests") { 423 include_dirs = [ "." ] 424 sources = angle_perf_tests_sources + [ "angle_perftests_main.cpp" ] 425 426 deps = [ 427 ":angle_perftests_shared", 428 ":angle_trace_perftests", 429 "$angle_spirv_tools_dir:spvtools_val", 430 ] 431 432 data_deps = [ 433 "${angle_root}:libEGL", 434 "${angle_root}:libGLESv2", 435 ] 436 437 data_deps += [ "//testing:run_perf_test" ] 438 439 if (is_win || is_linux || is_chromeos) { 440 data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ] 441 } 442 if (is_win && target_cpu != "arm64") { 443 data_deps += [ "${angle_root}/third_party/glmark2:glmark2_wgl" ] 444 } 445 if (is_linux || is_chromeos) { 446 data_deps += [ "${angle_root}/third_party/glmark2:glmark2_glx" ] 447 } 448 449 if (is_clang) { 450 # Allows us to edit traces and remove chunks of code without compile warnings. 451 cflags_cc = [ "-Wno-unused-const-variable" ] 452 } 453 } 454} 455 456###----------------------------------------------------- 457### ES 1 conformance tests 458###----------------------------------------------------- 459 460if (build_angle_gles1_conform_tests) { 461 gles1_conform_root = "$angle_root/third_party/gles1_conform" 462 463 config("angle_gles1_conform_support") { 464 include_dirs = [ 465 "$gles1_conform_root", 466 "$gles1_conform_root/conform/conform", 467 "$gles1_conform_root/conform/conformshell", 468 "$gles1_conform_root/ctk", 469 "$gles1_conform_root/fixed", 470 "$gles1_conform_root/platform", 471 ] 472 473 defines = [ 474 "COMMON", 475 "CONFORM_ALTERNATE_MAIN", 476 477 # NULLWS defines is only used in covegl/native.h, remove here. 478 # if needed please add it in angle_test("angle_gles1_covegl_no_gtest") defines. 479 #"NULLWS", 480 ] 481 482 # This is used by the tests to typedef uint32_t. For some reason only needed on mac. 483 if (is_apple) { 484 defines += [ "__linux" ] 485 } 486 487 cflags = [] 488 if (is_clang) { 489 # Remove when crbug.com/428099 is resolved. 490 cflags += [ 491 "-Wno-implicit-function-declaration", 492 "-Wno-implicit-int-float-conversion", 493 "-Wno-int-to-pointer-cast", 494 "-Wno-self-assign", 495 "-Wno-sign-compare", 496 "-Wno-unused-const-variable", 497 "-Wno-unused-result", 498 "-Wno-unused-variable", 499 500 # Upstream tests do null pointer arithmetic, so disable those warnings. 501 "-Wno-null-pointer-arithmetic", 502 ] 503 } else { 504 cflags += [ "/wd4101" ] # unreferenced local variable 505 } 506 } 507 508 # This source set is a bit special so we don't use angle_source_set. 509 angle_gles1_conform_common_source = [ 510 "$gles1_conform_root/ctk/ctk.h", 511 "$gles1_conform_root/ctk/ctkn.c", 512 "$gles1_conform_root/ctk/glext.c", 513 "$gles1_conform_root/fixed/fixed.c", 514 "$gles1_conform_root/fixed/float64.c", 515 "$gles1_conform_root/fixed/int32.c", 516 "$gles1_conform_root/fixed/int64.c", 517 "$gles1_conform_root/platform/gl_fixed_point.h", 518 "$gles1_conform_root/platform/gl_single_precision.h", 519 "$gles1_conform_root/platform/math_fixed.h", 520 "$gles1_conform_root/platform/math_float.h", 521 "$gles1_conform_root/platform/platform.h", 522 "$gles1_conform_root/platform/platform_gl.h", 523 "$gles1_conform_root/platform/platform_random.h", 524 "$gles1_conform_root/platform/platform_stdlib.h", 525 "$gles1_conform_root/platform/platform_types.h", 526 "$gles1_conform_root/platform/printf_fixed.h", 527 "$gles1_conform_root/platform/printf_float.h", 528 "$gles1_conform_root/platform/random.c", 529 "$gles1_conform_root/platform/stdlib_ansi.h", 530 ] 531 532 source_set("angle_gles1_conformance_no_gtest") { 533 configs += [ 534 ":angle_gles1_conform_support", 535 "$angle_root:internal_config", 536 ] 537 538 public_configs = [ 539 "$angle_root/util:angle_util_config", 540 "$angle_root:angle_static", 541 "$angle_root:gl_prototypes", 542 ] 543 544 if (is_clang) { 545 cflags_c = [ "-Wno-implicit-fallthrough" ] 546 } 547 548 testonly = true 549 550 public_deps = [ 551 "$angle_root:angle_common", 552 "$angle_root:libEGL_static", 553 "$angle_root:libGLESv2_static", 554 "$angle_root:preprocessor", 555 "$angle_root:translator", 556 "$angle_root/util:angle_util_static", 557 ] 558 559 sources = [ 560 "$gles1_conform_root/conform/conform/apfunc.c", 561 "$gles1_conform_root/conform/conform/appl.c", 562 "$gles1_conform_root/conform/conform/bclear.c", 563 "$gles1_conform_root/conform/conform/bcolor.c", 564 "$gles1_conform_root/conform/conform/bcorner.c", 565 "$gles1_conform_root/conform/conform/blend.c", 566 "$gles1_conform_root/conform/conform/bufobj.c", 567 "$gles1_conform_root/conform/conform/clip.c", 568 "$gles1_conform_root/conform/conform/colramp.c", 569 "$gles1_conform_root/conform/conform/copytex.c", 570 "$gles1_conform_root/conform/conform/dither.c", 571 "$gles1_conform_root/conform/conform/divzero.c", 572 "$gles1_conform_root/conform/conform/drawtex.c", 573 "$gles1_conform_root/conform/conform/fogexp.c", 574 "$gles1_conform_root/conform/conform/foglin.c", 575 "$gles1_conform_root/conform/conform/gets.c", 576 "$gles1_conform_root/conform/conform/l_ac.c", 577 "$gles1_conform_root/conform/conform/l_al.c", 578 "$gles1_conform_root/conform/conform/l_am.c", 579 "$gles1_conform_root/conform/conform/l_ap.c", 580 "$gles1_conform_root/conform/conform/l_as.c", 581 "$gles1_conform_root/conform/conform/l_dl.c", 582 "$gles1_conform_root/conform/conform/l_dm.c", 583 "$gles1_conform_root/conform/conform/l_dmn.c", 584 "$gles1_conform_root/conform/conform/l_dmp.c", 585 "$gles1_conform_root/conform/conform/l_em.c", 586 "$gles1_conform_root/conform/conform/l_se.c", 587 "$gles1_conform_root/conform/conform/l_sed.c", 588 "$gles1_conform_root/conform/conform/l_sen.c", 589 "$gles1_conform_root/conform/conform/l_sep.c", 590 "$gles1_conform_root/conform/conform/l_sl.c", 591 "$gles1_conform_root/conform/conform/l_sm.c", 592 "$gles1_conform_root/conform/conform/l_sn.c", 593 "$gles1_conform_root/conform/conform/l_sp.c", 594 "$gles1_conform_root/conform/conform/lineaa.c", 595 "$gles1_conform_root/conform/conform/linehv.c", 596 "$gles1_conform_root/conform/conform/linerast.c", 597 "$gles1_conform_root/conform/conform/logicop.c", 598 "$gles1_conform_root/conform/conform/mask.c", 599 "$gles1_conform_root/conform/conform/mget.c", 600 "$gles1_conform_root/conform/conform/mipgen.c", 601 "$gles1_conform_root/conform/conform/miplevels.c", 602 "$gles1_conform_root/conform/conform/miplin.c", 603 "$gles1_conform_root/conform/conform/mipsel.c", 604 "$gles1_conform_root/conform/conform/mpalette.c", 605 "$gles1_conform_root/conform/conform/mquery.c", 606 "$gles1_conform_root/conform/conform/mstack.c", 607 "$gles1_conform_root/conform/conform/multitex.c", 608 "$gles1_conform_root/conform/conform/mustpass.c", 609 "$gles1_conform_root/conform/conform/packpix.c", 610 "$gles1_conform_root/conform/conform/pntaa.c", 611 "$gles1_conform_root/conform/conform/pntrast.c", 612 "$gles1_conform_root/conform/conform/pntsprt.c", 613 "$gles1_conform_root/conform/conform/pntszary.c", 614 "$gles1_conform_root/conform/conform/polycull.c", 615 "$gles1_conform_root/conform/conform/readfmt.c", 616 "$gles1_conform_root/conform/conform/rescalen.c", 617 "$gles1_conform_root/conform/conform/scissor.c", 618 "$gles1_conform_root/conform/conform/spclear.c", 619 "$gles1_conform_root/conform/conform/spcorner.c", 620 "$gles1_conform_root/conform/conform/spfunc.c", 621 "$gles1_conform_root/conform/conform/spop.c", 622 "$gles1_conform_root/conform/conform/tests.c", 623 "$gles1_conform_root/conform/conform/texcombine.c", 624 "$gles1_conform_root/conform/conform/texdecal.c", 625 "$gles1_conform_root/conform/conform/texedge.c", 626 "$gles1_conform_root/conform/conform/texpalet.c", 627 "$gles1_conform_root/conform/conform/trirast.c", 628 "$gles1_conform_root/conform/conform/tritile.c", 629 "$gles1_conform_root/conform/conform/userclip.c", 630 "$gles1_conform_root/conform/conform/vorder.c", 631 "$gles1_conform_root/conform/conform/vpclamp.c", 632 "$gles1_conform_root/conform/conform/xform.c", 633 "$gles1_conform_root/conform/conform/xformmix.c", 634 "$gles1_conform_root/conform/conform/xformn.c", 635 "$gles1_conform_root/conform/conform/xformvp.c", 636 "$gles1_conform_root/conform/conform/xformw.c", 637 "$gles1_conform_root/conform/conform/zbclear.c", 638 "$gles1_conform_root/conform/conform/zbfunc.c", 639 "$gles1_conform_root/conform/conformshell/conform.h", 640 "$gles1_conform_root/conform/conformshell/driver.c", 641 "$gles1_conform_root/conform/conformshell/driver.h", 642 "$gles1_conform_root/conform/conformshell/path.c", 643 "$gles1_conform_root/conform/conformshell/path.h", 644 "$gles1_conform_root/conform/conformshell/pathdata.c", 645 "$gles1_conform_root/conform/conformshell/pathdata.h", 646 "$gles1_conform_root/conform/conformshell/paths.c", 647 "$gles1_conform_root/conform/conformshell/shell.c", 648 "$gles1_conform_root/conform/conformshell/util.c", 649 "$gles1_conform_root/conform/conformshell/util.h", 650 "$gles1_conform_root/conform/conformshell/utilg.c", 651 "$gles1_conform_root/conform/conformshell/utilg.h", 652 "$gles1_conform_root/conform/conformshell/utilm.c", 653 "$gles1_conform_root/conform/conformshell/utilm.h", 654 "$gles1_conform_root/conform/conformshell/utilp.c", 655 "$gles1_conform_root/conform/conformshell/utilp.h", 656 "$gles1_conform_root/conform/conformshell/utilru.c", 657 "$gles1_conform_root/conform/conformshell/utilru.h", 658 "$gles1_conform_root/conform/conformshell/utils.c", 659 "$gles1_conform_root/conform/conformshell/utils.h", 660 "$gles1_conform_root/conform/conformshell/utilt.c", 661 "$gles1_conform_root/conform/conformshell/utilt.h", 662 ] 663 664 sources += angle_gles1_conform_common_source 665 } 666 667 angle_test("angle_gles1_conformance_tests") { 668 deps = [ 669 ":angle_common_test_utils_static", 670 ":angle_gles1_conformance_no_gtest", 671 ] 672 673 include_dirs = [ "." ] 674 675 sources = [ 676 "angle_generic_tests_main.cpp", 677 "gles1_conformance_tests/ConformanceTests.cpp", 678 "test_utils/ANGLETest.cpp", 679 "test_utils/ANGLETest.h", 680 ] 681 682 configs += [ 683 "${angle_root}:libANGLE_config", 684 "${angle_root}:angle_backend_config", 685 ] 686 } 687 688 if (!is_win && !is_apple) { 689 source_set("angle_gles1_covgl_no_gtest") { 690 configs += [ 691 ":angle_gles1_conform_support", 692 "$angle_root:internal_config", 693 ] 694 695 public_configs = [ 696 "$angle_root/util:angle_util_config", 697 "$angle_root:angle_static", 698 "$angle_root:gl_prototypes", 699 ] 700 701 testonly = true 702 703 public_deps = [ 704 "$angle_root:angle_common", 705 "$angle_root:libEGL_static", 706 "$angle_root:libGLESv2_static", 707 "$angle_root:preprocessor", 708 "$angle_root:translator", 709 "$angle_root/util:angle_util_static", 710 ] 711 712 sources = [ 713 "$gles1_conform_root/conform/covgl/a.c", 714 "$gles1_conform_root/conform/covgl/b.c", 715 "$gles1_conform_root/conform/covgl/c.c", 716 "$gles1_conform_root/conform/covgl/d.c", 717 "$gles1_conform_root/conform/covgl/data.c", 718 "$gles1_conform_root/conform/covgl/e.c", 719 "$gles1_conform_root/conform/covgl/enum.c", 720 "$gles1_conform_root/conform/covgl/f.c", 721 "$gles1_conform_root/conform/covgl/g.c", 722 "$gles1_conform_root/conform/covgl/h.c", 723 "$gles1_conform_root/conform/covgl/i.c", 724 "$gles1_conform_root/conform/covgl/l.c", 725 "$gles1_conform_root/conform/covgl/m.c", 726 "$gles1_conform_root/conform/covgl/n.c", 727 "$gles1_conform_root/conform/covgl/o.c", 728 "$gles1_conform_root/conform/covgl/p.c", 729 "$gles1_conform_root/conform/covgl/q.c", 730 "$gles1_conform_root/conform/covgl/r.c", 731 "$gles1_conform_root/conform/covgl/s.c", 732 "$gles1_conform_root/conform/covgl/shell.h", 733 "$gles1_conform_root/conform/covgl/t.c", 734 "$gles1_conform_root/conform/covgl/v.c", 735 "$gles1_conform_root/conform/covgl/w.c", 736 ] 737 738 sources += angle_gles1_conform_common_source 739 740 defines = [ "ProbeEnum=ProbeEnumANGLE" ] 741 } 742 743 angle_test("angle_gles1_covgl_tests") { 744 deps = [ 745 ":angle_common_test_utils_static", 746 ":angle_gles1_covgl_no_gtest", 747 ] 748 749 include_dirs = [ "." ] 750 751 sources = [ 752 "$gles1_conform_root/conform/covgl/shell.c", 753 "angle_generic_tests_main.cpp", 754 "gles1_conformance_tests/CovglTests.cpp", 755 "test_utils/ANGLETest.cpp", 756 "test_utils/ANGLETest.h", 757 ] 758 759 configs += [ 760 ":angle_gles1_conform_support", 761 "${angle_root}:libANGLE_config", 762 "${angle_root}:angle_backend_config", 763 ] 764 } 765 } 766 source_set("angle_gles1_primtest_no_gtest") { 767 configs += [ 768 ":angle_gles1_conform_support", 769 "$angle_root:internal_config", 770 ] 771 772 public_configs = [ 773 "$angle_root/util:angle_util_config", 774 "$angle_root:angle_static", 775 "$angle_root:gl_prototypes", 776 ] 777 778 testonly = true 779 780 public_deps = [ 781 "$angle_root:angle_common", 782 "$angle_root:libEGL_static", 783 "$angle_root:libGLESv2_static", 784 "$angle_root:preprocessor", 785 "$angle_root:translator", 786 "$angle_root/util:angle_util_static", 787 ] 788 789 sources = [ 790 "$gles1_conform_root/conform/primtest/alias.c", 791 "$gles1_conform_root/conform/primtest/alpha.c", 792 "$gles1_conform_root/conform/primtest/blend.c", 793 "$gles1_conform_root/conform/primtest/depth.c", 794 "$gles1_conform_root/conform/primtest/dither.c", 795 "$gles1_conform_root/conform/primtest/driver.c", 796 "$gles1_conform_root/conform/primtest/driver.h", 797 "$gles1_conform_root/conform/primtest/fog.c", 798 "$gles1_conform_root/conform/primtest/hint.c", 799 "$gles1_conform_root/conform/primtest/light.c", 800 "$gles1_conform_root/conform/primtest/logic.c", 801 "$gles1_conform_root/conform/primtest/prim.c", 802 "$gles1_conform_root/conform/primtest/scissor.c", 803 "$gles1_conform_root/conform/primtest/shade.c", 804 "$gles1_conform_root/conform/primtest/shell.c", 805 "$gles1_conform_root/conform/primtest/shell.h", 806 "$gles1_conform_root/conform/primtest/stencil.c", 807 "$gles1_conform_root/conform/primtest/texture.c", 808 "$gles1_conform_root/conform/primtest/tproto.h", 809 ] 810 811 sources += angle_gles1_conform_common_source 812 } 813 814 angle_test("angle_gles1_primtest_tests") { 815 deps = [ 816 ":angle_common_test_utils_static", 817 ":angle_gles1_primtest_no_gtest", 818 ] 819 820 include_dirs = [ "$gles1_conform_root/conform" ] 821 822 sources = [ 823 "angle_generic_tests_main.cpp", 824 "gles1_conformance_tests/PrimtestTests.cpp", 825 "test_utils/ANGLETest.cpp", 826 "test_utils/ANGLETest.h", 827 ] 828 829 configs += [ 830 ":angle_gles1_conform_support", 831 "${angle_root}:libANGLE_config", 832 "${angle_root}:angle_backend_config", 833 ] 834 } 835 source_set("angle_gles1_covegl_no_gtest_source") { 836 configs += [ 837 ":angle_gles1_conform_support", 838 "$angle_root:internal_config", 839 ] 840 841 public_configs = [ 842 "$angle_root/util:angle_util_config", 843 "$angle_root:angle_static", 844 "$angle_root:gl_prototypes", 845 ] 846 847 testonly = true 848 849 public_deps = [ 850 "$angle_root:angle_common", 851 "$angle_root:libEGL_static", 852 "$angle_root:libGLESv2_static", 853 "$angle_root:preprocessor", 854 "$angle_root:translator", 855 "$angle_root/util:angle_util_static", 856 ] 857 858 sources = [ 859 "$gles1_conform_root/conform/covegl/enum.c", 860 "$gles1_conform_root/conform/covegl/native.h", 861 "$gles1_conform_root/conform/covegl/test.c", 862 ] 863 864 sources += angle_gles1_conform_common_source 865 866 if (!is_win && !is_linux && !is_chromeos) { 867 defines = [ "NULLWS" ] 868 } 869 } 870 871 angle_test("angle_gles1_covegl_no_gtest") { 872 deps = [ ":angle_gles1_covegl_no_gtest_source" ] 873 874 include_dirs = [ "$gles1_conform_root" ] 875 876 sources = [ "$gles1_conform_root/conform/covegl/shell.c" ] 877 878 if (is_win) { 879 sources += [ "$gles1_conform_root/conform/covegl/native_w32.c" ] 880 } else if (is_linux || is_chromeos) { 881 sources += [ "$gles1_conform_root/conform/covegl/native.c" ] 882 } else { 883 sources += [ "$gles1_conform_root/conform/covegl/native_nws.c" ] 884 defines += [ "NULLWS" ] 885 } 886 887 configs += [ 888 "${angle_root}:libANGLE_config", 889 "${angle_root}:angle_backend_config", 890 ] 891 892 defines += [ "COMMON" ] 893 894 if (is_win) { 895 if (is_clang) { 896 cflags = [ "-Wno-incompatible-pointer-types" ] 897 } else { 898 cflags = [ "/wd4133" ] # 'function': incompatible types 899 } 900 901 suppressed_configs += [ 902 "//build/config/win:lean_and_mean", 903 "//build/config/win:nominmax", 904 "//build/config/win:unicode", 905 ] 906 } 907 } 908} 909 910###----------------------------------------------------- 911### dEQP tests 912###----------------------------------------------------- 913 914if (build_angle_deqp_tests && !is_fuchsia) { 915 import("deqp_support/deqp.gni") 916 import("deqp_support/deqp_data_autogen.gni") 917 918 config("angle_deqp_support") { 919 include_dirs = deqp_include_dirs 920 if (is_win && !is_clang) { 921 include_dirs += [ "$deqp_path/framework/platform/win32" ] 922 cflags = [ 923 "/EHsc", # dEQP requires exceptions 924 "/wd4091", # typedef ignored when no variable is declared 925 "/wd4100", 926 "/wd4101", # unreferenced local variable 927 "/wd4125", # decimal digit terminates octal escape sequence 928 "/wd4127", # conditional expression constant 929 "/wd4244", # possible loss of data 930 "/wd4245", # argument signed/unsigned mismatch 931 "/wd4297", # function assumed not to throw an exception but does 932 "/wd4302", # truncation 933 "/wd4311", # pointer truncation 934 "/wd4389", # signed/unsigned mismatch 935 "/wd4510", # default constructor could not be generated 936 "/wd4512", 937 "/wd4610", # cannot be instantiated 938 "/wd4611", # setjmp interaction non-portable 939 "/wd4701", # potentially uninit used 940 "/wd4702", # unreachable code 941 "/wd4706", # assignment within conditional expression 942 "/wd4834", # discarding return value of function with 'nodiscard' 943 # attribute 944 "/wd4838", # conversion requires a narrowing conversion 945 "/wd4996", # deprecated 946 ] 947 } 948 949 defines = [ 950 "DEQP_SUPPORT_GLES31=1", 951 "DEQP_SUPPORT_GLES3=1", 952 "DEQP_SUPPORT_GLES2=1", 953 "DEQP_SUPPORT_EGL=1", 954 "DEQP_TARGET_NAME=\"angle\"", 955 "DEQP_GLES31_RUNTIME_LOAD=1", 956 "DEQP_GLES3_RUNTIME_LOAD=1", 957 "DEQP_GLES2_RUNTIME_LOAD=1", 958 "QP_SUPPORT_PNG=1", 959 "_HAS_EXCEPTIONS=1", 960 "_MBCS", 961 "ANGLE_DEQP_DATA_DIR=\"gen/vk_gl_cts_data/data\"", 962 ] 963 964 if (is_android) { 965 include_dirs += [ "$deqp_path/framework/platform/android" ] 966 967 _android_api = android64_ndk_api_level 968 if (!angle_64bit_current_cpu) { 969 _android_api = android32_ndk_api_level 970 } 971 972 defines += [ "DE_ANDROID_API=" + "${_android_api}" ] 973 } 974 975 if (is_clang) { 976 # TODO(jmadill): Remove this once we fix dEQP. 977 cflags_c = [ "-Wno-unused-local-typedef" ] 978 cflags_cc = [ 979 "-Wno-sizeof-array-div", # https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/2127 980 "-Wno-string-conversion", # implicit conversion turns string literal 981 # into bool 982 "-Wno-unused-function", 983 "-Wno-unused-local-typedef", 984 "-Wno-unused-result", # ignoring return value of function declared with 985 # 'nodiscard' attribute 986 ] 987 } 988 989 # Ask the system headers to expose all the regular function otherwise 990 # dEQP doesn't compile and produces warnings about implicitly defined 991 # functions. 992 if (is_linux || is_chromeos) { 993 # This has to be GNU_SOURCE as on Linux dEQP uses syscall() 994 defines += [ "_GNU_SOURCE" ] 995 } 996 if (is_android || is_apple) { 997 # _XOPEN_SOURCE=600 is what is used in deqp/src/Android.mk 998 defines += [ "_XOPEN_SOURCE=600" ] 999 } 1000 } 1001 1002 deqp_undefine_configs = [ 1003 "//build/config/compiler:chromium_code", 1004 "//build/config/compiler:no_exceptions", 1005 "//build/config/compiler:no_rtti", 1006 "${angle_root}:constructor_and_destructor_warnings", 1007 "${angle_root}:extra_warnings", 1008 ] 1009 1010 if (is_win) { 1011 deqp_undefine_configs += [ 1012 "//build/config/win:lean_and_mean", 1013 "//build/config/win:nominmax", 1014 "//build/config/win:unicode", 1015 ] 1016 } 1017 1018 set_defaults("angle_deqp_source_set") { 1019 public_configs = [] 1020 configs = angle_common_configs 1021 cflags = [] 1022 } 1023 1024 template("angle_deqp_source_set") { 1025 angle_source_set(target_name) { 1026 testonly = true 1027 forward_variables_from(invoker, "*") 1028 suppressed_configs += deqp_undefine_configs 1029 1030 if (is_clang) { 1031 cflags += [ 1032 # Suppress a spurious header warning. http://crbug.com/995046 1033 "-Wno-nonportable-include-path", 1034 ] 1035 } 1036 } 1037 } 1038 1039 config("angle_deqp_framework_debase_config") { 1040 include_dirs = [ "$deqp_path/framework/delibs/debase" ] 1041 } 1042 1043 angle_deqp_source_set("angle_deqp_framework_debase") { 1044 public_configs += [ ":angle_deqp_framework_debase_config" ] 1045 sources = deqp_framework_debase_sources 1046 } 1047 1048 config("angle_deqp_framework_decpp_config") { 1049 include_dirs = [ "$deqp_path/framework/delibs/decpp" ] 1050 } 1051 1052 angle_deqp_source_set("angle_deqp_framework_decpp") { 1053 public_configs += [ 1054 ":angle_deqp_support", 1055 ":angle_deqp_framework_decpp_config", 1056 "//build/config/compiler:exceptions", 1057 "//build/config/compiler:no_chromium_code", 1058 ] 1059 if (is_clang) { 1060 cflags_cc = [ 1061 # Supresses self assign warnings in SharedPtr_selfTest 1062 # Can be removed if dEQP or clang are fixed 1063 "-Wno-self-assign", 1064 ] 1065 } 1066 1067 public_deps = [ 1068 ":angle_deqp_framework_debase", 1069 ":angle_deqp_framework_delibs", 1070 ] 1071 sources = deqp_framework_decpp_sources 1072 } 1073 1074 config("angle_deqp_framework_xexml_config") { 1075 include_dirs = [ "$deqp_path/framework/xexml" ] 1076 } 1077 1078 angle_deqp_source_set("angle_deqp_framework_xexml") { 1079 public_configs += [ 1080 ":angle_deqp_support", 1081 ":angle_deqp_framework_decpp_config", 1082 ":angle_deqp_framework_delibs_config", 1083 "//build/config/compiler:exceptions", 1084 "//build/config/compiler:no_chromium_code", 1085 ] 1086 1087 public_deps = [ 1088 ":angle_deqp_framework_debase", 1089 ":angle_deqp_framework_decpp", 1090 ":angle_deqp_framework_delibs", 1091 ] 1092 sources = deqp_framework_xexml_sources 1093 } 1094 1095 config("angle_deqp_libtester_config") { 1096 defines = [ "ANGLE_DEQP_LIBTESTER_IMPLEMENTATION" ] 1097 1098 if (is_clang) { 1099 # TODO(jmadill): Remove this once we fix dEQP. 1100 cflags_cc = [ 1101 "-Wno-delete-non-virtual-dtor", 1102 "-Wno-deprecated", 1103 1104 # Supresses self assign warning in setLumSat 1105 # Can be removed if dEQP or clang are fixed 1106 "-Wno-self-assign", 1107 ] 1108 } 1109 } 1110 1111 config("angle_deqp_framework_delibs_config") { 1112 include_dirs = [ 1113 "$deqp_path/framework/delibs/debase", 1114 "$deqp_path/framework/delibs/depool", 1115 "$deqp_path/framework/delibs/dethread", 1116 "$deqp_path/framework/delibs/deutil", 1117 "$deqp_path/framework/delibs/destream", 1118 ] 1119 } 1120 1121 angle_deqp_source_set("angle_deqp_framework_delibs") { 1122 sources = deqp_framework_delibs_sources 1123 1124 if (is_win) { 1125 sources += deqp_framework_delibs_sources_win 1126 } 1127 if (is_linux || is_chromeos || is_android || is_apple) { 1128 sources += deqp_framework_delibs_sources_unix 1129 } 1130 1131 public_configs = [ 1132 ":angle_deqp_framework_delibs_config", 1133 ":angle_deqp_support", 1134 ] 1135 1136 public_deps = [ ":angle_deqp_framework_debase" ] 1137 } 1138 1139 config("angle_deqp_framework_common_config") { 1140 include_dirs = [ 1141 "$deqp_path/framework/common", 1142 "$deqp_path/framework/randomshaders", 1143 "$deqp_path/framework/referencerenderer", 1144 ] 1145 } 1146 1147 angle_deqp_source_set("angle_deqp_framework_common") { 1148 sources = deqp_framework_common_sources 1149 public_configs = [ ":angle_deqp_framework_common_config" ] 1150 public_deps = [ 1151 ":angle_deqp_framework_decpp", 1152 ":angle_deqp_framework_qphelper", 1153 ":angle_deqp_framework_xexml", 1154 ] 1155 } 1156 1157 config("angle_deqp_framework_opengl_config") { 1158 include_dirs = [ 1159 "$deqp_path/framework/opengl", 1160 "$deqp_path/framework/opengl/simplereference", 1161 "$deqp_path/framework/opengl/wrapper", 1162 ] 1163 } 1164 1165 angle_deqp_source_set("angle_deqp_framework_opengl") { 1166 sources = deqp_framework_opengl_sources 1167 public_configs = [ ":angle_deqp_framework_opengl_config" ] 1168 public_deps = [ ":angle_deqp_framework_common" ] 1169 } 1170 1171 config("angle_deqp_framework_egl_config") { 1172 include_dirs = [ 1173 "$deqp_path/framework/egl", 1174 "$deqp_path/framework/egl/wrapper", 1175 ] 1176 } 1177 1178 angle_deqp_source_set("angle_deqp_framework_egl") { 1179 sources = deqp_framework_egl_sources 1180 public_configs = [ ":angle_deqp_framework_egl_config" ] 1181 public_deps = [ ":angle_deqp_framework_opengl" ] 1182 } 1183 1184 config("angle_deqp_framework_qphelper_config") { 1185 include_dirs = [ "$deqp_path/framework/qphelper" ] 1186 } 1187 1188 angle_deqp_source_set("angle_deqp_framework_qphelper") { 1189 sources = deqp_framework_qphelper_sources 1190 public_deps = [ 1191 ":angle_deqp_framework_delibs", 1192 "${angle_libpng_dir}:libpng", 1193 ] 1194 public_configs = [ ":angle_deqp_framework_qphelper_config" ] 1195 } 1196 1197 config("angle_deqp_glshared_config") { 1198 include_dirs = [ "$deqp_path/modules/glshared" ] 1199 } 1200 1201 angle_deqp_source_set("angle_deqp_glshared") { 1202 sources = deqp_glshared_sources 1203 public_deps = [ ":angle_deqp_framework_opengl" ] 1204 public_configs = [ ":angle_deqp_glshared_config" ] 1205 } 1206 1207 angle_deqp_source_set("angle_deqp_libtester") { 1208 if (is_ios) { 1209 # shared libraries are hidden inside ios_framework_bundle, but we include headers from them 1210 check_includes = false 1211 } 1212 public_deps = [ 1213 ":angle_deqp_framework_common", 1214 ":angle_deqp_framework_egl", 1215 ":angle_deqp_glshared", 1216 "$angle_root:angle_common", 1217 "$angle_root/util:angle_util", 1218 ] 1219 1220 data_deps = [ 1221 "${angle_root}:libEGL", 1222 "${angle_root}:libGLESv2", 1223 ] 1224 1225 configs += [ "${angle_root}:library_name_config" ] 1226 public_configs += [ 1227 ":angle_deqp_libtester_config", 1228 "${angle_root}:libANGLE_config", 1229 ] 1230 sources = deqp_libtester_sources 1231 if (is_android) { 1232 libs = [ "log" ] 1233 } 1234 } 1235 1236 set_defaults("angle_deqp_gtest") { 1237 deps = [] 1238 sources = [] 1239 data = [] 1240 data_deps = [] 1241 } 1242 1243 template("angle_deqp_gtest") { 1244 _api = target_name 1245 1246 config_name = "angle_deqp_${_api}_config" 1247 config(config_name) { 1248 defines = invoker.defines 1249 } 1250 1251 shared_library_name = "angle_deqp_lib${_api}" 1252 angle_shared_library(shared_library_name) { 1253 forward_variables_from(invoker, 1254 [ 1255 "sources", 1256 "deps", 1257 "data", 1258 "data_deps", 1259 ]) 1260 1261 testonly = true 1262 1263 deps += [ 1264 ":angle_deqp_libtester", 1265 "$angle_root/util:angle_test_utils", 1266 "$angle_root/util:angle_util", 1267 ] 1268 1269 suppressed_configs += deqp_undefine_configs 1270 public_configs += [ ":$config_name" ] 1271 1272 sources += [ 1273 "deqp_support/angle_deqp_libtester.h", 1274 "deqp_support/angle_deqp_libtester_main.cpp", 1275 "deqp_support/tcuANGLEPlatform.cpp", 1276 "deqp_support/tcuANGLEPlatform.h", 1277 ] 1278 1279 if ((is_mac || is_ios) && !is_component_build) { 1280 ldflags = [ 1281 "-install_name", 1282 "@rpath/lib${shared_library_name}.dylib", 1283 ] 1284 } 1285 } 1286 1287 if (!build_with_chromium) { 1288 angle_executable("angle_deqp_${_api}_no_gtest") { 1289 testonly = true 1290 sources = [ "deqp_support/angle_deqp_tests_main.cpp" ] 1291 deps = [ ":$shared_library_name" ] 1292 } 1293 } 1294 1295 angle_test("angle_deqp_${_api}_tests") { 1296 deps = [ 1297 ":${shared_library_name}", 1298 "$angle_root:angle_common", 1299 "$angle_root/util:angle_util", 1300 ] 1301 1302 # Must be included outside of the source set for the define 1303 sources = [ 1304 "angle_deqp_tests_main.cpp", 1305 "deqp_support/angle_deqp_gtest.cpp", 1306 ] 1307 1308 expectations_file = "deqp_${_api}_test_expectations.txt" 1309 if (defined(invoker.expectations_file)) { 1310 expectations_file = invoker.expectations_file 1311 } 1312 data = [ 1313 "deqp_support/${expectations_file}", 1314 "${invoker.mustpass_dir}/${invoker.mustpass_name}", 1315 ] 1316 } 1317 } 1318 1319 _android_mustpass = "$deqp_path/android/cts/master" 1320 _aosp_mustpass = 1321 "$deqp_path/external/openglcts/data/mustpass/gles/aosp_mustpass/master" 1322 _khronos_mustpass = 1323 "$deqp_path/external/openglcts/data/mustpass/gles/khronos_mustpass/master" 1324 1325 angle_deqp_source_set("angle_deqp_gles2_common") { 1326 sources = deqp_gles2_sources 1327 public_deps = [ 1328 ":angle_deqp_framework_egl", 1329 ":angle_deqp_glshared", 1330 ] 1331 } 1332 1333 angle_deqp_source_set("angle_deqp_gles3_common") { 1334 sources = deqp_gles3_sources 1335 public_deps = [ 1336 ":angle_deqp_framework_egl", 1337 ":angle_deqp_glshared", 1338 ] 1339 } 1340 1341 angle_deqp_source_set("angle_deqp_gles31_common") { 1342 sources = deqp_gles31_sources 1343 public_deps = [ 1344 ":angle_deqp_framework_egl", 1345 ":angle_deqp_glshared", 1346 ] 1347 } 1348 1349 template("angle_deqp_core_gtest") { 1350 _api = target_name 1351 angle_deqp_gtest(target_name) { 1352 forward_variables_from(invoker, "*") 1353 1354 mustpass_name = "${_api}-master.txt" 1355 1356 deps += angle_deqp_data_copy_targets 1357 1358 data = [] 1359 if (_api == "gles2") { 1360 data = angle_deqp_data_gles2 1361 } else if (_api == "gles3") { 1362 data = angle_deqp_data_gles3 1363 } else if (_api == "gles31") { 1364 data = angle_deqp_data_gles31 1365 } else { 1366 # Make sure we include something so that angle_deqp_libtester_main.cpp can find something. 1367 data = [ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test" ] 1368 } 1369 } 1370 } 1371 1372 angle_deqp_core_gtest("gles2") { 1373 defines = [ "ANGLE_DEQP_GLES2_TESTS" ] 1374 deps = [ ":angle_deqp_gles2_common" ] 1375 mustpass_dir = _aosp_mustpass 1376 } 1377 1378 angle_deqp_core_gtest("gles3") { 1379 defines = [ "ANGLE_DEQP_GLES3_TESTS" ] 1380 deps = [ ":angle_deqp_gles3_common" ] 1381 mustpass_dir = _aosp_mustpass 1382 } 1383 1384 angle_deqp_core_gtest("gles31") { 1385 defines = [ "ANGLE_DEQP_GLES31_TESTS" ] 1386 deps = [ ":angle_deqp_gles31_common" ] 1387 mustpass_dir = _aosp_mustpass 1388 } 1389 1390 angle_deqp_core_gtest("egl") { 1391 defines = [ "ANGLE_DEQP_EGL_TESTS" ] 1392 sources = deqp_egl_sources 1393 mustpass_dir = _android_mustpass 1394 } 1395 1396 # The CTS also includes a set of "KHR" tests that are separate from the main body of dEQP tests. 1397 1398 config("angle_deqp_khr_common_config") { 1399 include_dirs = [ 1400 "$deqp_path/external/openglcts/modules/common", 1401 "$deqp_path/external/openglcts/modules/gl", 1402 "$deqp_path/external/openglcts/modules/gles2", 1403 "$deqp_path/external/openglcts/modules/gles3", 1404 "$deqp_path/external/openglcts/modules/gles31", 1405 "$deqp_path/external/openglcts/modules/gles32", 1406 "$deqp_path/external/openglcts/modules/glesext", 1407 ] 1408 if (is_clang) { 1409 cflags = [ "-Wno-header-hygiene" ] # using namespace directive in global 1410 # context in header 1411 } 1412 } 1413 1414 angle_deqp_source_set("angle_deqp_khr_common") { 1415 sources = deqp_khr_common_sources + deqp_khr_test_module_headers + 1416 deqp_khr_gl_sources + deqp_khr_gles2_sources + 1417 deqp_khr_gles3_sources + deqp_khr_gles31_sources + 1418 deqp_khr_gles32_sources + deqp_khr_glesext_sources + 1419 [ "deqp_support/glcTestPackageEntry_override.cpp" ] 1420 public_deps = [ 1421 ":angle_deqp_framework_egl", 1422 ":angle_deqp_glshared", 1423 "${angle_glslang_dir}:glslang_lib_sources", 1424 "${angle_spirv_tools_dir}:spvtools_val", 1425 ] 1426 public_configs = [ ":angle_deqp_khr_common_config" ] 1427 1428 # This is a bit of a hack so one test can capture memory limits. 1429 include_dirs = [ "$deqp_path/external/vulkancts/framework/vulkan" ] 1430 } 1431 1432 template("angle_deqp_khr_gtest") { 1433 angle_deqp_gtest(target_name) { 1434 forward_variables_from(invoker, "*") 1435 deps = [ ":angle_deqp_khr_common" ] 1436 deps += angle_deqp_data_copy_targets 1437 data = angle_deqp_external_openglcts_data_gles3 1438 mustpass_dir = _khronos_mustpass 1439 } 1440 } 1441 1442 angle_deqp_khr_gtest("khr_gles2") { 1443 defines = [ "ANGLE_DEQP_KHR_GLES2_TESTS" ] 1444 mustpass_name = "gles2-khr-master.txt" 1445 } 1446 1447 angle_deqp_khr_gtest("khr_gles3") { 1448 defines = [ "ANGLE_DEQP_KHR_GLES3_TESTS" ] 1449 mustpass_name = "gles3-khr-master.txt" 1450 } 1451 1452 angle_deqp_khr_gtest("khr_gles31") { 1453 defines = [ "ANGLE_DEQP_KHR_GLES31_TESTS" ] 1454 mustpass_name = "gles31-khr-master.txt" 1455 } 1456 1457 angle_deqp_khr_gtest("khr_gles32") { 1458 defines = [ "ANGLE_DEQP_KHR_GLES32_TESTS" ] 1459 mustpass_name = "gles32-khr-master.txt" 1460 } 1461 1462 template("angle_deqp_rotate_gtest") { 1463 split_target = string_split(target_name, "_") 1464 _api = split_target[0] 1465 _rotate = split_target[1] 1466 angle_deqp_gtest(target_name) { 1467 forward_variables_from(invoker, "*") 1468 1469 if (_rotate == "rotate90") { 1470 mustpass_suffix = "rotate-landscape" 1471 } else if (_rotate == "rotate180") { 1472 mustpass_suffix = "rotate-reverse-portrait" 1473 } else if (_rotate == "rotate270") { 1474 mustpass_suffix = "rotate-reverse-landscape" 1475 } else { 1476 assert(false) 1477 } 1478 1479 mustpass_name = "${_api}-${mustpass_suffix}.txt" 1480 1481 deps += angle_deqp_data_copy_targets 1482 1483 data = [] 1484 if (_api == "gles3") { 1485 data = angle_deqp_data_gles3 1486 } else if (_api == "gles31") { 1487 data = angle_deqp_data_gles31 1488 } else { 1489 assert(false) 1490 } 1491 } 1492 } 1493 1494 angle_deqp_rotate_gtest("gles3_rotate90") { 1495 defines = [ "ANGLE_DEQP_GLES3_ROTATE90_TESTS" ] 1496 deps = [ ":angle_deqp_gles3_common" ] 1497 mustpass_dir = _aosp_mustpass 1498 expectations_file = "deqp_gles3_rotate_test_expectations.txt" 1499 } 1500 1501 angle_deqp_rotate_gtest("gles3_rotate180") { 1502 defines = [ "ANGLE_DEQP_GLES3_ROTATE180_TESTS" ] 1503 deps = [ ":angle_deqp_gles3_common" ] 1504 mustpass_dir = _aosp_mustpass 1505 expectations_file = "deqp_gles3_rotate_test_expectations.txt" 1506 } 1507 1508 angle_deqp_rotate_gtest("gles3_rotate270") { 1509 defines = [ "ANGLE_DEQP_GLES3_ROTATE270_TESTS" ] 1510 deps = [ ":angle_deqp_gles3_common" ] 1511 mustpass_dir = _aosp_mustpass 1512 expectations_file = "deqp_gles3_rotate_test_expectations.txt" 1513 } 1514 1515 angle_deqp_rotate_gtest("gles31_rotate90") { 1516 defines = [ "ANGLE_DEQP_GLES31_ROTATE90_TESTS" ] 1517 deps = [ ":angle_deqp_gles31_common" ] 1518 mustpass_dir = _aosp_mustpass 1519 expectations_file = "deqp_gles31_rotate_test_expectations.txt" 1520 } 1521 1522 angle_deqp_rotate_gtest("gles31_rotate180") { 1523 defines = [ "ANGLE_DEQP_GLES31_ROTATE180_TESTS" ] 1524 deps = [ ":angle_deqp_gles31_common" ] 1525 mustpass_dir = _aosp_mustpass 1526 expectations_file = "deqp_gles31_rotate_test_expectations.txt" 1527 } 1528 1529 angle_deqp_rotate_gtest("gles31_rotate270") { 1530 defines = [ "ANGLE_DEQP_GLES31_ROTATE270_TESTS" ] 1531 deps = [ ":angle_deqp_gles31_common" ] 1532 mustpass_dir = _aosp_mustpass 1533 expectations_file = "deqp_gles31_rotate_test_expectations.txt" 1534 } 1535} 1536 1537group("angle_tests") { 1538 testonly = true 1539 deps = [ 1540 ":angle_end2end_tests", 1541 ":angle_perftests", 1542 ":angle_system_info_test", 1543 ":angle_unittests", 1544 "capture_replay_tests", 1545 ] 1546 if (!is_fuchsia) { 1547 deps += [ 1548 ":angle_white_box_perftests", 1549 ":angle_white_box_tests", 1550 ] 1551 } 1552 if (build_angle_deqp_tests && !is_fuchsia) { 1553 deps += [ 1554 ":angle_deqp_egl_tests", 1555 ":angle_deqp_gles2_tests", 1556 ":angle_deqp_gles31_tests", 1557 ":angle_deqp_gles3_tests", 1558 ] 1559 if (!build_with_chromium) { 1560 deps += [ 1561 ":angle_deqp_egl_no_gtest", 1562 ":angle_deqp_gles2_no_gtest", 1563 ":angle_deqp_gles31_no_gtest", 1564 ":angle_deqp_gles3_no_gtest", 1565 ] 1566 } 1567 } 1568 if (build_angle_gles1_conform_tests) { 1569 deps += [ 1570 ":angle_gles1_conformance_tests", 1571 ":angle_gles1_covegl_no_gtest", 1572 ":angle_gles1_primtest_tests", 1573 ] 1574 if (!is_win && !is_apple) { 1575 deps += [ ":angle_gles1_covgl_tests" ] 1576 } 1577 } 1578} 1579