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