BUILD.gn


Log

Author Commit Date CI Message
Yuly Novikov 8edc68e3 2019-02-12T12:41:01 Vulkan: Require Android NDK API level 26, dropping Android N support. Due to Vulkan Validation Layers breaking Android N backward compatibility. See http://crrev/c/1405714 and https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/623 Bug: angleproject:3095 Change-Id: I5da306c567cd9a0088149ca9929b38c8ed2cc86a Reviewed-on: https://chromium-review.googlesource.com/c/1465954 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 3f0ff409 2019-02-12T03:08:51 Revert "Vulkan: Port renderer to Fuchsia" This reverts commit 991d1cfb5e5a2f20a46961da3ad85b95da30b88a. Reason for revert: Failing compile on the fuchsia bots on the ANGLE auto-roller. https://ci.chromium.org/p/chromium/builders/luci.chromium.try/fuchsia_x64/209198 In file included from ../../third_party/angle/util/fuchsia/ScenicWindow.cpp:10: In file included from ../../third_party/angle/util/fuchsia/ScenicWindow.h:13: In file included from gen/third_party/fuchsia-sdk/sdk/fidl/fuchsia/ui/policy/cpp/fidl.h:5: In file included from ../../third_party/fuchsia-sdk/sdk/pkg/fidl_cpp/include/lib/fidl/cpp/internal/header.h:12: ../../third_party/fuchsia-sdk/sdk/pkg/fit/include/lib/fit/function.h:135:6: error: extra ';' after member function definition [-Werror,-Wextra-semi] }; ^ 1 error generated. Original change's description: > Vulkan: Port renderer to Fuchsia > > Add DisplayVk and WindowSurfaceVk subclasses for Fuchsia to the vulkan > renderer, as well as an implementation of OSWindow that renders > fullscreen for the test suite. > > Disallow use of the vulkan loader from third_party as Fuchsia uses a fork > of the loader and has not sent those changes upstream yet. > > Add a small wayland-inspired library libfuchsia-egl to provide a type > "struct fuchsia_egl_window" to use as EGLNativeWindowType. This type > combines a zx_handle_t to an image pipe channel and a surface size. > > Image pipes can only be used once to create a VkSurfaceKHR. This means we > have to recreate the pipe in tests that call eglCreateWindowSurface more > than once with a single OSWindow, or the second call will fail. Add a > resetNativeWindow() method to accomplish this. > > BUG=angleproject:2475 > TEST=angle_end2end_tests on Fuchsia > > Change-Id: I71a613a362dd1c8aada49a3c02ae461e064457bf > Reviewed-on: https://chromium-review.googlesource.com/c/1446496 > Commit-Queue: Michael Spang <spang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=spang@chromium.org,geofflang@chromium.org,jmadill@chromium.org,syoussefi@chromium.org Change-Id: I2d9abefa9db5363ba63a17c1773d0e147040d055 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2475 Reviewed-on: https://chromium-review.googlesource.com/c/1465761 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang 991d1cfb 2019-01-21T18:09:15 Vulkan: Port renderer to Fuchsia Add DisplayVk and WindowSurfaceVk subclasses for Fuchsia to the vulkan renderer, as well as an implementation of OSWindow that renders fullscreen for the test suite. Disallow use of the vulkan loader from third_party as Fuchsia uses a fork of the loader and has not sent those changes upstream yet. Add a small wayland-inspired library libfuchsia-egl to provide a type "struct fuchsia_egl_window" to use as EGLNativeWindowType. This type combines a zx_handle_t to an image pipe channel and a surface size. Image pipes can only be used once to create a VkSurfaceKHR. This means we have to recreate the pipe in tests that call eglCreateWindowSurface more than once with a single OSWindow, or the second call will fail. Add a resetNativeWindow() method to accomplish this. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia Change-Id: I71a613a362dd1c8aada49a3c02ae461e064457bf Reviewed-on: https://chromium-review.googlesource.com/c/1446496 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 238c19e1 2019-02-07T09:09:41 Add fuzzer for xxHash. Local testing did not turn up any crashes. Bug: angleproject:2983 Change-Id: I5e87ed0768e5bc4454c1a896f96d09ddd92baf44 Reviewed-on: https://chromium-review.googlesource.com/c/1458656 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill cd4f1fba 2019-02-07T15:26:10 Fix gtest main from including the wrong headers. We would accidentally propagate include directories to the test main target. This would show up as compile errors of the form: In file included from ../../third_party/angle/testing/gtest/include/gtest/gtest.h:10: ../../third_party/angle/third_party/googletest/src/googletest/include/gtest/gtest.h:303:22: error: no member named 'ImplicitlyConvertible' in namespace 'testing::internal' !internal::ImplicitlyConvertible<T, AssertionResult>::value>::type* ~~~~~~~~~~^ This fixes the GN properties such that we no longer get the wrong /testing/ and /third_party/googletest/ directories included. This regressed when glslang was rolled. Bug: angleproject:3088 Change-Id: I710f767cfe476454c10dacf2103b9203f1b5ee19 Reviewed-on: https://chromium-review.googlesource.com/c/1459596 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang 35218632 2019-02-06T13:05:21 Vulkan: Move vulkan config target to $angle_root:vulkan_config This will allow us to avoid loading the build file for //third_party/vulkan-validation-layers on Fuchsia, since we don't want to build the validation layers on that platform. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia (with full series) Change-Id: Ifeb67125f5fcebf2b30ae18b760667ba7c56e4d5 Reviewed-on: https://chromium-review.googlesource.com/c/1456479 Commit-Queue: Michael Spang <spang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 52d861bd 2019-02-02T00:30:58 Disable -Wextra-semi-stmt Due to bot build failures. Partially reverts: c09ae15c0: Enable -Wextra-semi and -Wextra-semi-stmt. TBR=jmadill@chromium.org Bug: angleproject:3128 Change-Id: Ia3725e57d28cd899db59e1d8e760ad8ca3d5f70c Reviewed-on: https://chromium-review.googlesource.com/c/1450659 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c09ae15c 2019-02-01T14:16:32 Enable -Wextra-semi and -Wextra-semi-stmt. This will prevent users from accidentally making semicolon errors in the future. Bug: chromium:926235 Change-Id: I79a6fa376fb1ad8f0fcf1b65b1f572a035d1f4e9 Reviewed-on: https://chromium-review.googlesource.com/c/1446493 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cezary Kulakowski 4fb738fb 2019-02-01T10:53:44 Fix for linking of non-component angle_unittests Bug: chromium:927650 Change-Id: Ib944dee7e537820af53eb12538c33e7d0c4fbd68 Reviewed-on: https://chromium-review.googlesource.com/c/1449631 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0cb3b0f1 2019-01-28T09:55:20 Vulkan: Use glslang's internal BUILD.gn. This retires the ANGLE BUILD.gn file for glslang. Also makes a few more repos sync from Chromium's copy using build overrides. This should speed up Chrome checkouts slightly. Bug: angleproject:3088 Change-Id: I530f28d9b13469bbe6471a4c61e7353d599d81ec Reviewed-on: https://chromium-review.googlesource.com/c/1422545 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 47ca1b2f 2019-01-23T16:11:41 Revert "Vulkan: Adding custom pool allocator" This reverts commit 05459e06fde5047ae8f5f90fe091c3255e6bc88e. Reason for revert: Clusterfuzz bugs flagged this commit Original change's description: > Vulkan: Adding custom pool allocator > > Copied pool allocator used by compiler to common and hooking it up as > custom allocator for CommandPools. Modified it to support reallocation. > > RendererVk now has a private poolAllocator and VkAllocationCallbacks > struct. The allocation callbacks are initialized to static functions > in RendererVk::initializeDevice() and then passed to CommandPool init() > and destroy() functions. > > Using the pool allocator saves Command Pool/Buffer clean-up time which > was showing us as a bottleneck is some cases. > > Bug: angleproject:2951 > Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4 > Reviewed-on: https://chromium-review.googlesource.com/c/1409867 > Commit-Queue: Tobin Ehlis <tobine@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=jmadill@chromium.org,tobine@google.com,ianelliott@google.com,syoussefi@chromium.org Change-Id: I363a351667c4dddef79833061790da90de477e70 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2951 Reviewed-on: https://chromium-review.googlesource.com/c/1430679 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 05459e06 2019-01-17T12:25:54 Vulkan: Adding custom pool allocator Copied pool allocator used by compiler to common and hooking it up as custom allocator for CommandPools. Modified it to support reallocation. RendererVk now has a private poolAllocator and VkAllocationCallbacks struct. The allocation callbacks are initialized to static functions in RendererVk::initializeDevice() and then passed to CommandPool init() and destroy() functions. Using the pool allocator saves Command Pool/Buffer clean-up time which was showing us as a bottleneck is some cases. Bug: angleproject:2951 Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4 Reviewed-on: https://chromium-review.googlesource.com/c/1409867 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ab2bfa81 2019-01-15T19:06:47 Enable Chromium clang style plugin for libANGLE. This fixes a few style warnings: * auto should not deduce to raw pointer type * inlined virtual methods are not allowed * non-trivial constructors and destructors should be explicit * inlined non-trivial constructors should not be in-class * missing override keywords Bug: angleproject:3069 Change-Id: I3b3e55683691da3ebf6da06a5d3c729c71b6ee53 Reviewed-on: https://chromium-review.googlesource.com/c/1407640 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 7098cff5 2019-01-15T18:33:42 Make BUILD.gn targets into templates. This allows us to "globally" add and remove certain configs as long as we use the new templates. This simplifies the logic of adding configs for stuff like extra warnings and default include dirs. As well it simplifies removing certain common unwanted configs. Generally simplifies the logic in BUILD.gn. Will allow for easily suppressing the clang-plugins config instead of using a global setting in .gn. Then we can enable the additional warnings config-by-config. Also fixes some warnings that turned up after we enabled the extra warnings config in our tests. Also moves the dEQP tests main to be consistent with the other test main files. Bug: angleproject:3069 Change-Id: I5a8166cd0f5a7926822c171fcaf473fc86b3ffc1 Reviewed-on: https://chromium-review.googlesource.com/c/1409871 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Courtney Goeltzenleuchter c05c1416 2019-01-03T12:40:13 Add validation layers to Android apk The compressed symbol support requires explicitly listing the libraries, so add validation libraries. Use list of ANGLE libraries to reduce duplication Bug: angleproject:2981 Change-Id: Ia8feb58d2a2ee66299b00bbb1fd3a4d9094c0b68 Reviewed-on: https://chromium-review.googlesource.com/c/1394569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 624ce6a3 2019-01-04T14:17:24 Pass GN header visibility check. Updates angle_util to see the loader includes even if the loader is not enabled. This makes the GN check happy. Bug: angleproject:3052 Change-Id: Ifd23070385beefede4358c7b4c1823dc87b5ded8 Reviewed-on: https://chromium-review.googlesource.com/c/1395809 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Nico Weber 9db8df4c 2019-01-04T14:47:27 Slightly simplify .def file use. From `gn help sources`: As a special case, a file ending in ".def" will be treated as a Windows module definition file. It will be appended to the link line with a preceding "/DEF:" string. This makes the code slightly shorter, and also gives ninja a chance of re-running the link when the .def file changes since it now knows about this file. No intended behavior change. Change-Id: I5fecb22752508880b726482f7c3da5a75180e446 Reviewed-on: https://chromium-review.googlesource.com/c/1396499 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Jamie Madill 1f56ed2a 2019-01-03T15:24:22 Add WGLWindow and WGL test configs. WGLWindow lets us use a Windows driver's bindings instead of ANGLE. This only works if the underlying driver supports OpenGL ES compatibility. Also adds the WGL headers, WGL XML, and a specialized WGL loader. Because of a small driver issue with NVIDIA I added a retry for the WGL Window initialization. Bug: angleproject:2995 Change-Id: Ie5148ece470dd03df33015f4919ad1fa79a859ec Reviewed-on: https://chromium-review.googlesource.com/c/1366021 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill ba319ba3 2018-12-29T10:29:33 Re-land "Load entry points dynamically in tests and samples." Fixes the Android/ChromeOS/Fuchsia builds by using consistent EGL headers. This CL adds a dynamic loader generator based on XML files. It also refactors the entry point generation script to move the XML parsing into a helper class. Additionally this includes a new GLES 1.0 base header. The new header allows for function pointer types and hiding prototypes. All tests and samples now load ANGLE dynamically. In the future this will be extended to load entry points from the driver directly when possible. This will allow us to perform more accurate A/B testing. The new build configuration leads to some tests having more warnings applied. The CL includes fixes for the new warnings. Bug: angleproject:2995 Change-Id: I5a8772f41a0f89570b3736b785f44b7de1539b57 Reviewed-on: https://chromium-review.googlesource.com/c/1392382 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 9f088621 2018-12-29T20:46:15 Revert "Load entry points dynamically in tests and samples." This reverts commit 03923558a7103827ffec6a4d2a1453ed91f01c6f. Reason for revert: fails compilation on Android, ChromeOS and Fuchsia during roll https://chromium-review.googlesource.com/c/chromium/src/+/1392624 Original change's description: > Load entry points dynamically in tests and samples. > > This CL adds a dynamic loader generator based on XML files. It also > refactors the entry point generation script to move the XML parsing > into a helper class. > > Additionally this includes a new GLES 1.0 base header. The new > header allows for function pointer types and hiding prototypes. > > All tests and samples now load ANGLE dynamically. In the future this > will be extended to load entry points from the driver directly when > possible. This will allow us to perform more accurate A/B testing. > > The new build configuration leads to some tests having more warnings > applied. The CL includes fixes for the new warnings. > > Bug: angleproject:2995 > Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05 > Reviewed-on: https://chromium-review.googlesource.com/c/1359516 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org Change-Id: I902bec2d733c2b879be29c02ab52a0b7d4eaa077 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2995 Reviewed-on: https://chromium-review.googlesource.com/c/1392381 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 03923558 2018-12-29T10:29:33 Load entry points dynamically in tests and samples. This CL adds a dynamic loader generator based on XML files. It also refactors the entry point generation script to move the XML parsing into a helper class. Additionally this includes a new GLES 1.0 base header. The new header allows for function pointer types and hiding prototypes. All tests and samples now load ANGLE dynamically. In the future this will be extended to load entry points from the driver directly when possible. This will allow us to perform more accurate A/B testing. The new build configuration leads to some tests having more warnings applied. The CL includes fixes for the new warnings. Bug: angleproject:2995 Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05 Reviewed-on: https://chromium-review.googlesource.com/c/1359516 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Courtney Goeltzenleuchter 92b16ea2 2018-12-12T17:06:47 Re-land: Compress symbols for libraries Reintroduce commit ffda3e2985f18f4ff6e3778af8b9715109b21ad0. Android requires system libraries to include symbols to aid debugging. This CL will compress and attach the symbols from the unstripped .so and add it to the stripped .so that goes in the apk when building a release build. Fix https://crbug.com/916751 introduced by Compress symbol support CL ffda3e2985f18f4ff6e3778af8b9715109b21ad0. Bug: angleproject:2981 Change-Id: I8d3ef8e9f0ed44bdd24290f6cd56ba674b79f98c Reviewed-on: https://chromium-review.googlesource.com/c/1387344 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
CJ DiMeglio 96c11cc7 2018-12-19T23:04:18 Revert "Compress symbols for libraries" This reverts commit ffda3e2985f18f4ff6e3778af8b9715109b21ad0. Reason for revert: https://crbug.com/916751 Original change's description: > Compress symbols for libraries > > Android requires system libraries to include symbols to aid > debugging. This CL will compress and attach the symbols from the > unstripped .so and add it to the stripped .so that goes in the apk > when building a release build. > > Bug: angleproject:2981 > Change-Id: I51c315627b9183e49b509c27df506bf99bf45f30 > Reviewed-on: https://chromium-review.googlesource.com/c/1376270 > Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> TBR=ynovikov@chromium.org,jmadill@chromium.org,courtneygo@google.com Change-Id: Ifda891fc5257aa9c9b522bf5a20fda10142e82ad No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2981 Reviewed-on: https://chromium-review.googlesource.com/c/1385347 Reviewed-by: CJ DiMeglio <lethalantidote@chromium.org> Commit-Queue: CJ DiMeglio <lethalantidote@chromium.org>
Courtney Goeltzenleuchter ffda3e29 2018-12-12T17:06:47 Compress symbols for libraries Android requires system libraries to include symbols to aid debugging. This CL will compress and attach the symbols from the unstripped .so and add it to the stripped .so that goes in the apk when building a release build. Bug: angleproject:2981 Change-Id: I51c315627b9183e49b509c27df506bf99bf45f30 Reviewed-on: https://chromium-review.googlesource.com/c/1376270 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 4638dc9d 2018-12-17T13:13:49 Re-land "Load correct libGLESv2 on Linux and Mac." Re-land fixes build to ensure commit_id is built before libEGL. libEGL was implicitly loading libGLESv2 on startup. This is bad because on platforms like Linux and Mac we could sometimes use the incorrect rpath. This in turn meant we needed workarounds like using "_angle" extensions to our shared objects to get the correct loading behaviour. Fix this by loading libGLESv2 dynamically in libEGL. We build the loader automatically from egl.xml. The loader itself is lazily initialized on every EGL entry point call. This is necessary because on Linux, etc, there is no equivalent to Windows' DLLMain. We also use an EGL.h with different generation options so we have the proper function pointer types. A README is included for instructions on how to regenerate EGL.h. The entry point generation script is refactored into a helper class that is used in the loader generator. Also adds the libGLESv2 versions of the EGL entry points in the DEF file on Windows. This allows them to be imported properly in 32-bit configurations. Also fixes up some errors in ANGLE's entry point definitions. Also includes a clang-format disable rule for the Khronos headers. This CL will help us to run ANGLE tests against native drivers. Bug: angleproject:2871 Bug: chromium:915731 Change-Id: I4192a938d1f4117cea1bf1399c98bda7ac25ddab Reviewed-on: https://chromium-review.googlesource.com/c/1380511 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 720ca449 2018-12-17T14:04:10 Pass GN header visibility check. This fixes a few things: * removes includes that weren't supposed to be present * scopes some compiler code into white_box_perftests * makes version.h/commit and angle_common id more visible * roll zlib to a version that passes check This should help prevent build problems from popping up in the downstream Chromium build. We could also potentially look at including gn check in our CQ recipe. Bug: chromium:915429 Change-Id: I350f543e16de13c84eb2c43260f4966d47185114 Reviewed-on: https://chromium-review.googlesource.com/c/1380771 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 175d918a 2018-12-16T19:53:23 Revert "Load correct libGLESv2 on Linux and Mac." This reverts commit dd815b623e60a1e1550f328104ffcd7caf20fde1. Reason for revert: Broke https://luci-milo.appspot.com/p/chromium/builders/luci.chromium.ci/win-rel/8006 Original change's description: > Load correct libGLESv2 on Linux and Mac. > > libEGL was implicitly loading libGLESv2 on startup. This is bad > because on platforms like Linux and Mac we could sometimes use the > incorrect rpath. This in turn meant we needed workarounds like using > "_angle" extensions to our shared objects to get the correct loading > behaviour. > > Fix this by loading libGLESv2 dynamically in libEGL. We build the > loader automatically from egl.xml. The loader itself is lazily > initialized on every EGL entry point call. This is necessary because > on Linux, etc, there is no equivalent to Windows' DLLMain. > > We also use an EGL.h with different generation options so we have the > proper function pointer types. A README is included for instructions > on how to regenerate EGL.h. > > The entry point generation script is refactored into a helper class > that is used in the loader generator. Also adds the libGLESv2 versions > of the EGL entry points in the DEF file on Windows. This allows them to > be imported properly in 32-bit configurations. > > Also fixes up some errors in ANGLE's entry point definitions. Also > includes a clang-format disable rule for the Khronos headers. > > This CL will help us to run ANGLE tests against native drivers. > > Bug: angleproject:2871 > Change-Id: Id6ecf969308f17b1be4083538428c9c1a1836572 > Reviewed-on: https://chromium-review.googlesource.com/c/1370725 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org Change-Id: I921b3c45435ab4f05cbc2d1c1172b4185d6257b0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2871 Reviewed-on: https://chromium-review.googlesource.com/c/1378887 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill dd815b62 2018-12-15T10:39:00 Load correct libGLESv2 on Linux and Mac. libEGL was implicitly loading libGLESv2 on startup. This is bad because on platforms like Linux and Mac we could sometimes use the incorrect rpath. This in turn meant we needed workarounds like using "_angle" extensions to our shared objects to get the correct loading behaviour. Fix this by loading libGLESv2 dynamically in libEGL. We build the loader automatically from egl.xml. The loader itself is lazily initialized on every EGL entry point call. This is necessary because on Linux, etc, there is no equivalent to Windows' DLLMain. We also use an EGL.h with different generation options so we have the proper function pointer types. A README is included for instructions on how to regenerate EGL.h. The entry point generation script is refactored into a helper class that is used in the loader generator. Also adds the libGLESv2 versions of the EGL entry points in the DEF file on Windows. This allows them to be imported properly in 32-bit configurations. Also fixes up some errors in ANGLE's entry point definitions. Also includes a clang-format disable rule for the Khronos headers. This CL will help us to run ANGLE tests against native drivers. Bug: angleproject:2871 Change-Id: Id6ecf969308f17b1be4083538428c9c1a1836572 Reviewed-on: https://chromium-review.googlesource.com/c/1370725 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tim Van Patten fdccaa3a 2018-11-01T17:47:10 Enhance ANGLE for Android Developer Options Update ANGLE Developer Options Update ANGLE developer options to allow selecting the OpenGL driver (default, ANGLE, native) for each app as well as forcing ANGLE for all apps. Bug: angleproject:2962 Test: Verify the default/ANGLE/native values are saved and applied and used by the loader. Change-Id: I6737b11bc061318cf8438c8161593ca70239590f Reviewed-on: https://chromium-review.googlesource.com/c/1354101 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop 8e636443 2018-11-30T16:24:11 Generate multiple Android APKs This change moves the generation of Android APKs into a template function so it can be called multiple times with different parameters. The two packages generated only differ by package name and APK name, but this lays the framework for easy future changes. Bug: angleproject:3004 Change-Id: I6c27d379bfa5f5c2912bf04cb748983787e385ac Reviewed-on: https://chromium-review.googlesource.com/c/1361381 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill c10a023a 2018-12-03T10:13:36 Fix fuchsia build of libfeature_support. This enables the linux path for GetSystemInfo on fuchsia. Tested locally and fixes the build. Bug: angleproject:2996 Change-Id: Icc8f282a66ff43ae9c74545a9dcee2d4af8a21e0 Reviewed-on: https://chromium-review.googlesource.com/c/1358632 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tom Tan 5c317537 2018-11-30T17:01:01 Don't copy d3dcompiler_47.dll when build target is Windows ARM64 Windows ARM64 was first released at 10.0.16299 which contains d3dcompiler_47.dll under %systemroot%\system32, so no need to copy it from Windows SDK. For the same reason, it is also not included as part of redistribute package for Windows ARM64. Bug: chromium:893460 Change-Id: I175ce831d800ec1f19c767fc172219f6b693fec3 Reviewed-on: https://chromium-review.googlesource.com/c/1357155 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott a9d579e8 2018-11-28T11:44:48 Version-2 API of the A4A opt-in/out (a.k.a. feature-support utilities) This version-2 API splits up and renames parts of the version-1 API. Some initial unit tests were added. The code is now built and tested on Linux, Windows, and Mac (in addition to Android, which is where it's being used). Memory leaks were fixed and some memory/list-management TODOs were also dealt with (associated with an Android bug). Some review items deferred. See: angleproject:2993 Bug: angleproject:2794 Bug: b/113346561 Change-Id: Iff307f9347fb05a733fe96b6774fb32d36e25590 Reviewed-on: https://chromium-review.googlesource.com/c/1291837 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Cody Northrop 2c0e06d9 2018-11-29T09:00:08 Add temporary icon for ANGLE apk Even though we don't plan to be launchable, we need to include an icon for plumbing reasons. For now I'm using a temporary icon pulled from our Cubey sample. When we get something official we can easily swap it in, and enhance it support multiple dpis. Bug: angleproject:2991 Change-Id: I2873d74586543c617cfc13fe6582b0b4967cbb22 Reviewed-on: https://chromium-review.googlesource.com/c/1355505 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuly Novikov b29fccfe 2018-11-28T10:09:39 Rearrange Android lib deps Vulkan backend was missing dependency on NativeWindow. Bug: angleproject:2314 Change-Id: I66675af6f885b57bdb0524a0626dfec0256a21d3 Reviewed-on: https://chromium-review.googlesource.com/c/1354100 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten c4e0a1e5 2018-11-28T16:08:11 Revert "Enhance ANGLE for Android Developer Options" This reverts commit fdbdb2b247ffa4cf66bc2cd3a5bb45a056bd88a3. Reason for revert: I didn't mean to land this quite yet, since we are still working on the Android side of things. It seems doing CQ+2 merges it while I was trying for just a dry run while replying to Jamie's comments with updates (after checking with Boulder folks, I want CQ+1 next time). Once the Android changes are ready, I'll work on getting this landed again. Original change's description: > Enhance ANGLE for Android Developer Options > > Update ANGLE Developer Options > > Update ANGLE developer options to allow selecting the OpenGL driver > (default, ANGLE, native) for each app as well as forcing ANGLE for all > apps. > > Bug: angleproject:2962 > Test: Verify the default/ANGLE/native values are saved and applied and > used by the loader. > > Change-Id: I6041e7e49ca5cc65f90fc8ae6f1b084e4639d769 > Reviewed-on: https://chromium-review.googlesource.com/c/1330315 > Commit-Queue: Tim Van Patten <timvp@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org,cnorthrop@google.com,tobine@google.com,courtneygo@google.com,ianelliott@google.com,timvp@google.com Change-Id: If3a4e917973c56b858244a0ca7f1b164143524f5 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2962 Reviewed-on: https://chromium-review.googlesource.com/c/1354099 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten fdbdb2b2 2018-11-01T17:47:10 Enhance ANGLE for Android Developer Options Update ANGLE Developer Options Update ANGLE developer options to allow selecting the OpenGL driver (default, ANGLE, native) for each app as well as forcing ANGLE for all apps. Bug: angleproject:2962 Test: Verify the default/ANGLE/native values are saved and applied and used by the loader. Change-Id: I6041e7e49ca5cc65f90fc8ae6f1b084e4639d769 Reviewed-on: https://chromium-review.googlesource.com/c/1330315 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 573f76b3 2018-05-03T11:10:44 Debug: Add Systrace Markers Update ScopedPerfEventHelper class to add systrace markers by default. This change unifies ANGLE EVENT* macro system so that at the base level in LoggingAnnotator class, systrace markers will be added by default. Modify the base DebugLogger to use char* by default and move any conversions to wchar_t to the Windows specializations where wchar is used. This limits type conversions to only where they're needed. This change also includes some new TRACE_EVENT() calls in the VK backend which will result in systrace markers for those calls on the Android platform. The new build flag "angle_enable_trace" is added to enable the tracing calls. Bug: angleproject:2528 Change-Id: Icefc197d4407e1cd31338710e37865abae6a0b15 Reviewed-on: https://chromium-review.googlesource.com/c/1042785 Commit-Queue: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Brandon Jones b77884b7 2018-10-10T09:07:12 Autogenerate Repeated Portions of Blit11 Introduces a script to generate Blit11's BlitShaderType enum and shader mapping functions. Bug: angleproject:2870 Change-Id: I5b704f55bdde1706614a519ecb0ee3756f7799e0 Reviewed-on: https://chromium-review.googlesource.com/c/1273725 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 749589f8 2018-10-25T12:48:49 Vulkan: Remaining disjoint timer query functions The following features where missing in c2b576d9e: - glGetIntegerv with GL_GPU_DISJOINT_EXT: this is currently impossible to query in Vulkan, so 0 is always returned. - glGetIntegerv with GL_TIMESTAMP_EXT: this is a way to query GPU timestamp without performing flushes or waiting for the GPU to finish. There is no direct correspondance in Vulkan; it's implemented by making a small submission, with no dependency to other submissions, in which there is only a timestamp query. Bug: angleproject:2885 Change-Id: I2341bd610db9084c26b6421c6f8949950ffa4de8 Reviewed-on: https://chromium-review.googlesource.com/c/1299873 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 25224e78 2018-10-22T11:56:02 Vulkan: add GPU trace events RendererVk now tries, as best as it can, to match the CPU and GPU timers on init as well as every finish(). A clock-sync event is generated for each such synchronization point. RendererVk::traceGpuEvent() is a new function that, given a command buffer, performs timestamp queries corresponding to GPU events. These queries are read back when done, without incurring GPU bubbles, at which point an event is generated with that timestamp. Bug: angleproject:2908 Change-Id: I08d7d11ff9f8ad6c9f9a9899767c9cd746d0623e Reviewed-on: https://chromium-review.googlesource.com/c/1296954 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 20dc1c9b 2018-10-26T13:13:32 Vulkan: Make layers not depend on libvulkan. On Android the layers were adding a dependency on libvulkan. This isn't necessary. We can move this dependency up the change to libANGLE. Bug: angleproject:2935 Change-Id: I63460c05ca99c5afb6e863af9d6142576aa910b9 Reviewed-on: https://chromium-review.googlesource.com/c/1301721 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott e4c64c3d 2018-10-17T14:53:39 Implement new API/interface for the ANGLE feature-support utility. The original API is designated as version 0. The new API is designated as version 1. A new function is provided for determing the version of the API that can be used. Bug: angleproject:2794 Change-Id: I8205b462522cbc34d31643ea14815e187497abed Reviewed-on: https://chromium-review.googlesource.com/c/1278836 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Courtney Goeltzenleuchter 7d81ae71 2018-10-08T19:25:19 Put feature utility into it's own library To minimize system impact, have feature configuration utility live in it's own library. Bug=angleproject:2418 Change-Id: Ic8e3862965e515ded7e1a6078a7b9f8b92878818 Reviewed-on: https://chromium-review.googlesource.com/c/1269822 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Courtney Goeltzenleuchter e7ece9e2 2018-10-08T16:43:43 Do not include ALOGV in release builds To match behavior of ALOGV in Android system code, disable output in release builds. Bug=angleproject:2418 Change-Id: I657ec366249f9d5defe9b05fe298099c47389580 Reviewed-on: https://chromium-review.googlesource.com/c/1269819 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 996628a4 2018-09-24T16:39:26 Vulkan: Add support for VkPipelineCache The cache is initialized from the application's blob cache and is occasionally written back to it for disk storage. Bug: angleproject:2516 Change-Id: I4cba4b00a7b9641c2983ef07159bc62cd10a5519 Reviewed-on: https://chromium-review.googlesource.com/1241373 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Eric Stevenson c84510f4 2018-09-25T19:22:55 Angle: Remove obsolete requires_sdk_api_level_23 from BUILD.gn. Will be removed upstream. BUG=chromium:688465 Change-Id: If50ac3624a5f692755797eaabcc0c7d6e7408655 Reviewed-on: https://chromium-review.googlesource.com/1244079 Reviewed-by: Yuly Novikov <ynovikov@google.com> Commit-Queue: Yuly Novikov <ynovikov@google.com>
Courtney Goeltzenleuchter 80171923 2018-09-05T13:50:35 Add rules file for ANGLE apk Provide rules as an asset to the ANGLE apk. Rules determine the conditions when ANGLE will be used by Android applications. Bug=angleproject:2418 Change-Id: I3b8f0c51dc12e039e8c67acbace249abd15ae961 Reviewed-on: https://chromium-review.googlesource.com/1211764 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Ian Elliott 4d42ef39 2018-09-06T10:38:50 Add A4A opt-in/out logic This version of the code #ifdef's out the JSON-parsing code (which dependency was not yet found). Instead, 2 in-code rules are created and used (default and run Maps). Bug: angleproject:2794 Change-Id: I9d8c00459d5e674035f4073ccb839fac8d4d7aa5 Reviewed-on: https://chromium-review.googlesource.com/1200375 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott abcb2b3b 2018-08-29T17:04:15 Add stubs for A4A opt-in library. Bug: angleproject:2794 Change-Id: I9ba8abf5fdac4a1bae24bc78ece62337d24e903b Reviewed-on: https://chromium-review.googlesource.com/1196043 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang b02fc662 2018-08-21T09:48:01 Lock around all EGL and GL calls with a global mutex. BUG=angleproject:2464 Change-Id: I0231cc84777272f9cf26298c6a137f1ad3fd51d6 Reviewed-on: https://chromium-review.googlesource.com/1183441 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Frank Henigman 44b2c0b1 2018-08-29T17:31:27 Avoid rebase_path() in BUILD.gn. Adjust source paths so we don't need to use rebase_path() on all of them. BUG=angleproject:1569 Change-Id: I687dbb9378b1f054eb5664320c662fe4c882a82f Reviewed-on: https://chromium-review.googlesource.com/1194619 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman ddc41208 2018-08-23T22:11:55 Rename .gypi -> .gni. Rename and reformat all gyp files. They were previously converted to gn but not renamed to preserve continuity in git. This rename completes the removal of all traces of gyp. BUG=angleproject:1569 Change-Id: I50123105d8881583184ffc564bed65d9fbe4d41c Reviewed-on: https://chromium-review.googlesource.com/1187885 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman a7f97a27 2018-08-21T00:04:05 Gyp is dead. Long live gn. Remove the gyp build. The .gypi files were not renamed so that diff and rebase would work on this change. They will be renamed in a separate change. BUG=angleproject:1569 Change-Id: If8a217027633293664b820104f91a4ca5889b24e Reviewed-on: https://chromium-review.googlesource.com/1187380 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Takuto Ikuta c93eeaab 2018-08-07T16:25:42 Make angle's commit.h depend on git head This is for reproducible build of angle related libraries. Bug: 828669 Change-Id: I807c8fb01b976f6e7a71477ee934b9e0b0cdc684 Reviewed-on: https://chromium-review.googlesource.com/1164814 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 8c1508bc 2018-07-30T09:46:27 Update name of ANGLE Android apk to match expectations Android build system wants to see pre-built components like this with naming that indicates what it is. Bug: angleproject:2702 Change-Id: I84acee78a6ceef5b04c87436c68d41510f6e66c7 Reviewed-on: https://chromium-review.googlesource.com/1155004 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott d07c52e2 2018-06-22T15:42:09 Initial Android implementation of GetSystemInfo Change-Id: Ia44413aa94906b89d4981063600cd3de0edacee8 Reviewed-on: https://chromium-review.googlesource.com/1108454 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov cd70aa42 2018-06-20T17:05:32 Always depend on libandroid for angle_util. libnativewindow doesn't have all the functions angle_util requires, namely: AConfiguration_*, AInputEvent_*, AInputQueue_*, ALooper_*. It should be safe to always use libandroid, since angle_util is only used by tests, thus it won't interfere with AngleLibraries.apk Bug: angleproject:2418 Change-Id: I8343924629205bfb5d65dafe34db8e2baa987bae Reviewed-on: https://chromium-review.googlesource.com/1108747 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tobin Ehlis b971f499 2018-05-24T10:56:17 Migrating ANGLE to split LVL repos Separated the Vulkan Validation Layers, Loader, Tools and Headers into separate dirs to map to the new separate repo structure. Bug: angleproject:2558 Change-Id: I422038f7dd7efe8c5b7a49dc5074de5caf40edfa Reviewed-on: https://chromium-review.googlesource.com/1071880 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tom Anderson a4a3c19a 2018-06-07T11:05:40 Remove manual references to exe_and_shlib_deps After [1], a manual dependency on exe_and_shlib_deps is no longer necessary since it's automatically added. This CL removes all remaining manual references to exe_and_shlib_deps. [1] https://chromium.googlesource.com/chromium/src.git/+/d7ed1f0a9c28c932fddc834ca5de44f28266c7f5 BUG=chromium:845700 Change-Id: I66bcead6586050bf952c4aa1f4d3f726c88d2277 Reviewed-on: https://chromium-review.googlesource.com/1091231 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Courtney Goeltzenleuchter b001528f 2018-05-18T16:48:50 Use libnativewindow for Android builds To avoid references to libEGL.so do not link with libandroid, use libnativewindow instead. libnativewindow is available in android-26 and newer. The appropriate library will be selected based on the ndk level configured. If ndk revision is 26 or higher, we'll link to libnativewindow otherwise use libandroid. The ANGLE apk needs to use 26 or higher. Bug: angleproject:2418 Change-Id: I96509e5d645d132a34734558cd0566f1812b615b Reviewed-on: https://chromium-review.googlesource.com/1066821 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Courtney Goeltzenleuchter 4607148c 2018-05-15T13:35:15 Add build-id for all builds to help debugging Android Studio debugger needs the build-id to be able to match up symbols with stripped libraries. Bug: angleproject:2566 Change-Id: Ied6afd09c9ec0d379a16b4a08b56b827af11ca0d Reviewed-on: https://chromium-review.googlesource.com/1064554 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 96d292d0 2018-05-17T13:36:09 Format cleanup Bug: angleproject:2339 Bug: angleproject:2455 Change-Id: I12dfd1e95f18a4277f409d694000e0e775c8bffb Reviewed-on: https://chromium-review.googlesource.com/1064814 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 74a76320 2018-05-14T09:11:51 Fix libGLESv2 wrong .def file. The GN was including both libGLESv2.def and _autogen. This fixes the GN to only include _autogen, and removes the .def include from the static build target. Bug: angleproject:2476 Change-Id: I2e856e3bbe875bdadd1add4517cef60a11227047 Reviewed-on: https://chromium-review.googlesource.com/1057451 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Brandon1 Jones <brandon1.jones@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8073a951 2018-05-09T16:41:39 Enable warning for non-virtual destructors Virtual functions are removed from TSymbol, so the warning for non-virtual destructor found in a class with virtual functions can be enabled. BUG=angleproject:2417 TEST=angle_unittests Change-Id: Icd0ea2c77ce826739fbe954137f8ee78e6ef5386 Reviewed-on: https://chromium-review.googlesource.com/1051830 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill d47044ad 2018-04-27T11:45:03 Vulkan: Add framework for internal shaders. Vulkan intenal shaders are stored in a ShaderLibrary, and this is owned by the RendererVk. This way the shaders are reused between all the different Contexts. They are initialized lazily to keep init time low. They also have an associated Serial (called a ProgramSerial) so they can be identified in a PipelineDesc (used by the Pipeline cache). We use a python script to build and invoke the glslang validator, that also produces SPIR-V binary code snippets. These snippets are gathered into an auto-generated file that is exposed via an auto-generated header file. The InternalShaderID enum class gives access to the internal shaders that are shared through the Vulkan back-end. This also adds simple clear shaders to be used in masked color clears. The patch doesn't add any functionality but it is split off from the color clear functionality to keep the code size down. Bug: angleproject:2339 Bug: angleproject:2455 Change-Id: Ie83043eda217c9f013817b198c92a3b7ba0878b4 Reviewed-on: https://chromium-review.googlesource.com/1031372 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Courtney Goeltzenleuchter ddd77245 2018-04-30T10:31:18 Add GLESv1_CM to angle library apk Bug: angleproject:2418 Change-Id: I793d330a2cc92a510b189fa23d14f41f48a7d986 Reviewed-on: https://chromium-review.googlesource.com/1035422 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Courtney Goeltzenleuchter e5db628b 2018-04-26T08:05:18 Cleanup for "Add angle library apk" Forgot to format BUILD.gn in CL 46978bccd3659 Remove unnecessary android:debuggable setting Bug: angleproject:2520 Change-Id: I31457c82536827f78e3aa17c02dd8e878f803f04 Reviewed-on: https://chromium-review.googlesource.com/1030259 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 2565d48b 2018-04-12T17:06:48 Add angle library apk Package up libraries into Android APK. Libraries must be uncompressed for them to be mmapped properly. Bug: angleproject:2418 Change-Id: I27817d7a6c5dcd93ca7790c55042c6548f84906f Reviewed-on: https://chromium-review.googlesource.com/1013057 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Courtney Goeltzenleuchter ec10096d 2018-04-10T13:43:46 Vulkan: Add build toggle for validation layers. We want to be able to build without validation layers to make it easier to use in other environments (e.g. Android) When angle_enable_vulkan is true and angle_enable_vulkan_validation_layers is true, build the Vulkan validation layers. Bug: angleproject:2489 Change-Id: I266ad8f757c5992021f249217f2be58f0148fcbf Reviewed-on: https://chromium-review.googlesource.com/1005558 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill eb79e337 2018-04-18T07:48:06 Vulkan: Do not build mock ICD on Android. This is causing a GN build error on our Android bots. Bug: angleproject:2471 Bug: angleproject:2482 Change-Id: I35ffc7972effb9c9ea26ab96cf23985eba1702c3 Reviewed-on: https://chromium-review.googlesource.com/1016700 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 08b9e046 2018-04-16T20:16:39 Vulkan: Disable warning in Mock ICD. We were missing a "no chromium code" config in the mock ICD. This was causing a build error, but the build error was mostly invisible because the mock ICD wasn't being built by default. Fix this by including it in the angle_vulkan target. Bug: angleproject:2482 Change-Id: I417d3fbf6a4acd93c06bab61967409730c2ea4ed Reviewed-on: https://chromium-review.googlesource.com/1012497 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 15215261 2018-04-11T12:14:55 Enable unneeded-internal-declaration compiler warning No longer have issues with unneeded internal declarations now that Tokenizer.cpp has been updated so re-enable compiler warning to catch future issues. BUG:angleproject:2451 Test: build Change-Id: I30daadc8c7374bcae753a7e69cb9a72855a1f548 Reviewed-on: https://chromium-review.googlesource.com/1007965 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov ad4f9642 2018-02-08T17:58:46 Allow ANGLE libs to have arbitrary suffix. In order to work with tools which intercept EGL and GLES calls. BUG=angleproject:2343 Change-Id: I63aec7a56648dc4b3e7f4aff7f7d1608709ba118 Reviewed-on: https://chromium-review.googlesource.com/920652 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov 40a945f2 2018-03-01T17:37:43 Rename vulkan_loader to libvulkan Also add a build argument to build it as a shared library. BUG=angleproject:2343 Change-Id: Ia590632b94d71b10d3ee64974fa4f5b4f00c3a70 Reviewed-on: https://chromium-review.googlesource.com/954403 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 8d986bf2 2018-02-21T08:28:01 Fix missing include files visible to GN. This should also fix the VS project generation. Thanks to Jeff Gilbert from Mozilla for sharing a list of missing files. Bug: angleproject:2360 Change-Id: Ideab28a0169cd7aabb6a7bd3aac3a5832443f023 Reviewed-on: https://chromium-review.googlesource.com/922874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d7ebfb92 2018-02-15T16:34:29 Add missing is_fuchsia to system_utils selection. This fixes a build break because of 046fa0efc44d3ac5d. See: https://crrev.com/c/898591 Bug: angleproject:2333 Change-Id: I6a4cb60dd2d2958ea71aaa27f1429233c2787fb4 Reviewed-on: https://chromium-review.googlesource.com/922878 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Nico Weber b5db2b49 2018-02-12T15:31:56 Enable -Wimplicit-fallthrough for ANGLE. Also teach MSVC that ANGLE_CRASH() can't return. Also fix instances of the warning in build configurations where UNREACHABLE() can return (e.g. release without dcheck_always_on or debug). If the UNREACHABLE()s are truly unreachable, this change has no behavior change. Bug: chromium:810767 Change-Id: I68f3587cf3e268c3ef634dce7ae3d70399859d0f Reviewed-on: https://chromium-review.googlesource.com/914842 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Lingfeng Yang 4edce336 2018-02-14T19:01:31 GLES1: macOS: Add rpath to libGLESv1_CM.dylib This is to fix error messages when running GLES1 samples (and probably other apps) from different directories than the same one as where libGLESv1_CM.dylib is located. BUG=angleproject:2306 Change-Id: I24ab33eb1bc805c1e64efab9a0acbfcf10480d94 Reviewed-on: https://chromium-review.googlesource.com/920926 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Yuly Novikov bac02d76 2018-02-07T20:36:07 Vulkan: Fix data_deps on layers Was broken by https://chromium-review.googlesource.com/900096 BUG=angleproject:2339 Change-Id: I3c28a38619d83e7dcbb2349565517feb1758976c Reviewed-on: https://chromium-review.googlesource.com/907959 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill a1134ba8 2018-02-07T15:24:47 Vulkan: Relocate third-party libraries. (2/2) This makes the BUILD.gn source lists a lot simpler, since they no longer need to use a special path variable, but instead can use the correct relative paths. This will lead to further simplifications so we can hopefully upstream the Vulkan tools BUILD.gn files. Second part updates the build files and removes the old repositories. Bug: angleproject:2339 Change-Id: I37f5b42a0854ca49448ecbbb32c19c24df57f452 Reviewed-on: https://chromium-review.googlesource.com/905894 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b62a1c2a 2018-02-06T09:54:02 Vulkan: Reorganize BUILD.gn files. This moves the SPIRV-Tools and glslang and Validation layers build files into the root of the dep folder. Requires an upstream Chrome change to allow for a different path to execute scrips in GN. Also removes the vulkan_support subdirectory. Bug: angleproject:2339 Change-Id: I457b5b05547c092a1e7fef6dd0aaadd8068e2143 Reviewed-on: https://chromium-review.googlesource.com/900096 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Nico Weber 79de62c6 2018-01-31T10:47:14 Explicitly suppress -Wimplicit-fallthrough for angle and its deps. No behavior change since that warning isn't enabled anywhere yet, and it's opt-in. This is a prerequisite for https://chromium-review.googlesource.com/c/chromium/src/+/895726 Bug: chromium:177475 Change-Id: Ie5ffccd240a65646fe07e7d4475f63c4e8620746 Reviewed-on: https://chromium-review.googlesource.com/895728 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Yuly Novikov 199f4294 2018-01-19T19:04:05 Vulkan: Enable on Android Add Android DisplayVk and WindowSurfaceVk variants. Build Vulkan backend and validation layers on Android if toolchain uses required NDK API level. Fix validation layers discovery to work on Android. BUG=angleproject:2314 TEST=angle_end2end_tests builds and runs on Nexus 5X, 12 VULKAN tests pass Change-Id: Iac2ec4ecd6470a7552f9f60c023ba1760aa090c5 Reviewed-on: https://chromium-review.googlesource.com/887797 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 5dd4ad89 2018-01-29T13:53:43 Vulkan: Add a perf test for the Pipeline cache. This micro-benchmark can be used to measure the performance impact of changing the Pipeline cache. For instance, we can check if changing the size of the hash key affects performance significantly. Also updates the build files so angle_perftests can see vulkan.h, and makes the Vulkan headers an explicit source set. This test currently shows that a lot of time is spent in PMurmurHash, with some time also spent in memcmp. Bug: angleproject:2163 Change-Id: Ie8bb3e31d58590f373d28cbbb59f7e372b80cc29 Reviewed-on: https://chromium-review.googlesource.com/884882 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov e7624004 2018-01-27T18:27:07 Fix Android build After https://chromium-review.googlesource.com/887944 "angle_common" depends on "log" on Android. Failed to link angle_shader_translator during ANGLE roll. BUG=angleproject:1660 Change-Id: I9b0730901bdcf9cab64311994d65a577a1358eeb Reviewed-on: https://chromium-review.googlesource.com/890603 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 2aaa7b4e 2018-01-12T17:17:27 Add GLES1 targets and stub entry points. * Create a new libGLESv1_CM target. * Merge all autogenerated extension entry points into one file. * Allow creation of ES1 contexts. BUG=angleproject:2306 Change-Id: I446258363a96a3c37d657089dd7c1cff0fa3cf78 Reviewed-on: https://chromium-review.googlesource.com/865718 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman e42ec189 2017-12-11T23:58:53 Add angle_link_glx arg to standalone gn build. Port the angle_link_glx setting of the gyp build to the standalone gn build. When set to true, libGL will be linked into libANGLE, instead of dlopen-ed. This is useful when using apitrace. BUG=angleproject:1569 Change-Id: I16a91504960169efdcde3b2c50b944de148d9ba6 Reviewed-on: https://chromium-review.googlesource.com/821691 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Geoff Lang b944053a 2017-11-28T13:26:34 Add extra warnings for narrowing and bool conversion. BUG=angleproject:2258 Change-Id: If571820fccca1daba0ea1ac5a204f95b1b3c59f9 Reviewed-on: https://chromium-review.googlesource.com/794093 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill ff7aac5e 2017-11-13T16:57:14 Re-land "Export angle::PlatformMethods." This should fix undefined function call sanitizer warnings. Re-land fixes the build and uses proper export annotation. Also fixes the missing source includes in BUILD.gn for libANGLE so future changes to Platform.h (and other includes) will get picked up by the dependency analyzer step. BUG=chromium:778918 Change-Id: I92cc8a43bbbdc70de50a67f73b223d8f903cd6cd Reviewed-on: https://chromium-review.googlesource.com/767111 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org>
Corentin Wallez 163965d5 2017-10-11T11:38:55 BUILD.gn: prepare dEQP test support on Mac BUG=angleproject:1569 Change-Id: I703f4739726c849950ba103049fa39498a4ff1df Reviewed-on: https://chromium-review.googlesource.com/744361 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez aa9c396b 2017-10-27T14:54:39 Revert "BUILD.gn: prepare dEQP test support on Mac" This reverts commit 4b8b650c8e4586c14466faa9527175755860cd6b. Reason for revert: causes build failure on the Mac dEQP builder. Original change's description: > BUILD.gn: prepare dEQP test support on Mac > > BUG=angleproject:1569 > > Change-Id: I77aa55d28b884fa648ff52aedddf3a23fe6e4a8c > Reviewed-on: https://chromium-review.googlesource.com/713194 > Commit-Queue: Corentin Wallez <cwallez@chromium.org> > Reviewed-by: Frank Henigman <fjhenigman@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=fjhenigman@chromium.org,jmadill@chromium.org,cwallez@chromium.org Change-Id: Idc08cf12294505600890d1c6e43f62c0261631a5 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:1569 Reviewed-on: https://chromium-review.googlesource.com/741881 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 4b8b650c 2017-10-11T11:38:55 BUILD.gn: prepare dEQP test support on Mac BUG=angleproject:1569 Change-Id: I77aa55d28b884fa648ff52aedddf3a23fe6e4a8c Reviewed-on: https://chromium-review.googlesource.com/713194 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov c4f1dd83 2017-10-25T17:02:29 Use angle::BitSetIterator optimizations on arm64 as well Previously were enabled only on x86_64. Also change from using target_cpu to current_cpu, as the doc recommends. BUG=angleproject:1814 Change-Id: Ia7e8e930c76aab5cfb47b75e0ec78902ab313237 Reviewed-on: https://chromium-review.googlesource.com/737438 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 6d94f064 2017-10-21T22:19:40 Add more complete NULL driver for the GL back-end. This implements a NULL driver in OpenGL by stubbing out most of the GL functions in FunctionsGL except a few static "Gets" that are needed for initialization with Chromium and the tests. It is intended to be used for performance testing ONLY and will not have correct behaviour. It also adds a define to enable conditionally excluding the null entry points for implementations that wish to save on a bit of binary size. Also fixes some of the typedefs in functionsgl_typesdefs.h that were turned up after implementing the direct assignment from NULL stub entry point, generated from gl.xml, to the function pointer with type defined from functionsgl_typedefs.h. BUG=angleproject:2188 Change-Id: Ifa1e4739cb471ab6b52a4bf24c16d9eb4b334ac5 Reviewed-on: https://chromium-review.googlesource.com/727530 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jonathan Metzman fb9051a5 2017-10-09T16:14:06 Switch from use_libfuzzer to using_fuzzing_engine. The current build configuration causes AFL based fuzzers to be built with incorrect options. Bug: 770970 Change-Id: I712dd72a0f680df538e98622032cb13f39ed8c63 Reviewed-on: https://chromium-review.googlesource.com/707933 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Frank Henigman d0ef13a2 2017-08-28T22:53:24 Stand-alone build with gn. This should do the same things as the stand-alone gyp build, but with gn. You should switch to gn as gyp support will go away. You need a recent enough version of gn. If yours is too old try this one: ./buildtools/linux64/gn If "gclient sync" or anything fails with an ImportError on gyp stuff, try running it with the following PYTHONPATH in the environment: PYTHONPATH=tools/gyp/pylib BUG=angleproject:1569 Change-Id: I56d19bec2d8b649a7bd65062c656cbfc69ea3dd8 Reviewed-on: https://chromium-review.googlesource.com/642588 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Ben Wagner d736cccf 2017-10-11T15:08:22 Add :extra_warnings to all units in BUILD.gn. Fix resulting warnings. Change-Id: Ie251012ee01aa484a8c489f9deeec385a50528f9 Reviewed-on: https://chromium-review.googlesource.com/713695 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ben Wagner 211bff3f 2017-10-10T23:53:20 Enable inconsistent-missing-override for Clang Fix the resulting compile errors. No-Try: true Change-Id: I88e74f240b29ecf7b3883b0c5880dcb871e4c3cd Reviewed-on: https://chromium-review.googlesource.com/710415 Commit-Queue: Ben Wagner <benjaminwagner@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov f0be43fe 2017-06-29T21:25:56 Add missing dependency on exe_and_shlib_deps BUG=chromium:593874, angleproject:2095 Change-Id: I97860f7978d509bb36dfdfb5fac7524e9d24f5fe Reviewed-on: https://chromium-review.googlesource.com/557599 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>