BUILD.gn


Log

Author Commit Date CI Message
Maksim Sisov 56a4cc12 2020-05-21T13:17:21 Rename DisplayOzone to DisplayGbm. DisplayOzone doesn't really have anything related to Ozone. Instead, it's the gbm platform that is used there. Thus, rename it to DisplayGbm. Bug: chromium:1084458 Change-Id: I4d974f6afbf0daa28fc3e83943b35814dca203fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211763 Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang dd90f5a5 2020-04-07T12:59:23 Depend on vulkan headers in angle_gpu_info_util angle_gpu_info_util is capable of dynamically loading vulkan without a dependency but it still requires the dependency on the headers to compile on some systems. BUG= b:153394225 Change-Id: I698a825499364c09faea39384d25d454f83955b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139414 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 7e453a25 2020-03-15T22:11:03 Capture/Replay: Use zlib to compress data files. Gives about a 2-3x reduced data file size. Should help reduce the time we spent transferring trace files on Android. This feature is implemented as a parameter to the capture/replay tool. This keeps backwards compatiblity if we ever need to integrate a cpp replay into an environment that doesn't have access to zlib for decompression. We'll need to update the traces to take advantage of the compression. Bug: angleproject:4484 Change-Id: Id7994efe3c0d529b85fa7e7f1b00444e630dd2cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104555 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 90a8af38 2020-03-05T13:48:47 Add -rpath entries for non-component builds on Mac Mac was unable to find libvulkan.dylib because non-component builds do not contain these rpath entries. Bug: angleproject:4455 Change-Id: I7a3c452bd3b32c34b33c75b1456f9efa0d77a4ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090331 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang 20c69733 2020-03-06T11:02:31 Fix GN warning about unused variable when angle_enable_commit_id=false BUG=angleproject:2344 Change-Id: I3a0c8384d280755557fd425e80877addd756a9ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2091625 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e8883562 2020-03-06T09:32:18 Add a GN argument to enable/disable commit_id. Some android builds are done when .git is not present. BUG=angleproject:2344 Change-Id: Ic5418fb3b8161855e9c62d877eee22dabee846ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090684 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang dd19d554 2020-03-02T09:41:22 Change commit_id 'check' back to looking for .git files. commit_id.py was change to try running 'git status' to confirm that git was present. This caused it to succeed if there was a git checkout somewhere above ANGLE if ANGLE's .git didn't exist, incorrectly adding a non-existant .git/HEAD file to the gn rule's inputs. Always verify that ANGLE's .git/HEAD is present in commit_id.py. BUG=angleproject:2344 Change-Id: I7e170f39c8d5cef73086ecf6d68925a1d3512de1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082993 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 8b8dc561 2020-02-26T19:09:31 Fix Android component build. Shared libraries have .cr.so extension in Android component builds. Tests were failing to load the ANGLE libraries with just .so extensions. Bug: angleproject:4396 Change-Id: I88555c830c49136623ea9da9896f86ea6204f3b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076778 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang ba8ef68c 2020-02-24T14:13:40 Always use commit_id.py to generate commit.h commit_id_.py is capable of generating the default commit.h. This makes it so we always take a single path in gn. Remove the existing commit.h and generate it into the root generation folder (not the id subfolder) because Android blueprints can't handle generating into subfolders that don't exist. Make the <angle_dir> argument capable of taking a filename or directory name. This allows us to pass the .git/HEAD file which is a gn input. Android blueprints require all paths used as input or output to a script are listed as inputs or outputs in the genrule. BUG=angleproject:2344 Change-Id: I6600083fc400faf07808316c4a6244d6599df79a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2074924 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Robert Liao 4a9ec2ef 2020-02-25T16:33:21 Revert "Always use commit_id.py to generate commit.h" This reverts commit 4dc19c38c0c5e307350ecd8b9f80d59573161df9. Causes a git error during 'gn gen': fatal: this operation must be run in a work tree BUG=chromium:1055991,angleproject:2344 Change-Id: I74dd36d557dcaf1bd1b13264d806a1c6b09e1a56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073200 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 4dc19c38 2020-02-24T14:13:40 Always use commit_id.py to generate commit.h commit_id_.py is capable of generating the default commit.h. This makes it so we always take a single path in gn. Remove the existing commit.h and generate it into the root generation folder (not the id subfolder) because Android blueprints can't handle generating into subfolders that don't exist. Make the <angle_dir> argument capable of taking a filename or directory name. This allows us to pass the .git/HEAD file which is a gn input. Android blueprints require all paths used as input or output to a script are listed as inputs or outputs in the genrule. BUG=angleproject:2344 Change-Id: Ifd9c8331f421586db6f2c6e17faf3242376e11d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070600 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Julien Isorce 5641d193 2020-02-04T21:31:47 Move generic code from rx::DisplayAndroid/Ozone to rx::DisplayEGL This CL is intended to move and factorize code only. Move DisplayAndroid::generateConfigs to DisplayEGL::generateConfigs because the code is generic and not Android specific. It will be useful later to provide a default implementation of rx::DisplayEGL. Same for createWindowSurface and createPbufferSurface, they have been moved without changes from DisplayAndroid to DisplayEGL. Unimplemented functions in DisplayOzone and DisplayAndroid have been moved to DisplayEGL. Bug: angleproject:4328 Change-Id: Ibbd36f99ea457cbd69391beb4a83f23403bc40fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038286 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 71e6afb1 2020-01-14T14:12:31 Vulkan: Set set/binding in SPIR-V This change introduces a SPIR-V transformer that modifies shader interface variable decorations directly in SPIR-V instead of manipulating the input GLSL. Currently, descriptor set and binding indices are set by the transformer. The shader translator outputs arbitrary set and binding indices. Once compiled by glslang, the SPIR-V transformer modifies these decorations. The ultimate goal is to be able to modify the SPIR-V again when program pipeline objects decide a different set/binding is necessary. Bug: angleproject:3394 Change-Id: If358265a72bf1fe9f5676562b39a632cb2e05dc4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001477 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Michael Spang b630bf9e 2020-01-24T17:27:01 Fuchsia: Implement SystemInfo on Fuchsia The Android vulkan code is reusable, so move that to a new file SystemInfo_vulkan.cpp and call it in the Android & Fuchsia implementations. This is necessary to skip tests based on GPU. Bug: angleproject:4349, angleproject:4352 Change-Id: I8330cfcdbd41f4d51391bd5ed7f0820c55e02801 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023909 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill af5e3822 2020-01-28T10:05:36 Fix overlay build. The overlay define was placed in the libANGLE target instead of in the config. This was causing a compile error in the capture-enabled build. Bug: None Change-Id: I9df02faaf57683119ca49a9b44e41ff049b05556 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023479 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ethan Lee fcef6dcb 2020-01-24T22:41:35 For GGP builds, define __ggp__ manually. Unlike other platforms' definitions, the GGP SDK expects the project files to define this instead of having the compiler define it for us. Bug: angleproject:4237 Change-Id: I8f10311fdff785a74c5e49fc53a512f1c050bff3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2021010 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 683dd1d6 2020-01-13T17:21:52 GN: Move util build code into util/BUILD.gn. Prepratory clean up for WinUWP support. Bug: angleproject:4182 Change-Id: I97cc6cb42a50c6b57ca7d375d1e0a6b3da7aa9d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998673 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Brandon Schade 5cfab195 2019-10-28T09:12:53 Vulkan: Add test that logs supported texture formats Add a whitebox test to log all supported GLES formats for the active Vulkan ICD. The test object is dependent on libANGLE's gl_enum_util.* files as we need it to print out human readable values in the PrintAllFormatSupport test. Test: angle_white_box_tests --gtest_filter=*PrintAllSupportedFormats* Bug: angleproject:4093 Change-Id: I99d74935b705b2984f6320ed80a0e977c8fcd4be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1930607 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 9190f49c 2019-12-16T16:03:57 GN: Make new angle_test_utils target. This source set target lets other targets import the test utils without needing to export them. They get built into angle_util. They also get compiled into the various tests and samples. The change also fixes export issues. Moves some of the GN logic into the util/ subfolder. Bug: angleproject:3162 Bug: chromium:1030192 Change-Id: If99d201092ad8541c0de60b3bd893ac9b5875270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1968259 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang 7718c952 2019-12-13T16:39:15 [Fuchsia] Update FIDL library target names in ANGLE The SDK has renamed some targets, so update to the new names. Bug: chromium:1033597 Change-Id: Id346f5fb0094e4b71f8ec3b8c302eaa362529c06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1967958 Commit-Queue: Michael Spang <spang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 554b453c 2019-12-12T13:09:30 gn: Add 'test_only' label to util targets. Clarifies that angle_util is only used in tests and samples. Bug: angleproject:3162 Change-Id: I9a578cf7a9a09b2c3fd4683155824ed2e72f68cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1964934 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Josh Matthews 732c9d02 2019-11-29T13:59:03 Add /APPCONTAINER linker flag to shared libraries in UWP builds. Bug: angleproject:4181 Change-Id: I6940d5605e85bcf923b201be0f0f2b1f61c30ed5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1944463 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e3c25715 2019-12-03T14:08:36 gn: Minor improvements. Renaming "all" targets to reduce duplication. Also add libGLESv1_CM to "angle". And remove "shader_translator" since we already had "angle_shader_translator". An attempt to work around "invalid COFF sections" error that is popping up on the MSVC try bots. Bug: None Change-Id: I105aa5e59f67173643a3a2071b2aff345b5a6135 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947457 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 5afd5ec6 2019-10-25T10:53:40 Vulkan support for MacOS (using SwiftShader) Created a new WindowSurface/Display for MacOS/Vulkan, along with some GN changes to get it working. Bug: 1015454 Change-Id: I3f7a12f173795efe598856c702ce53b1e50831eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1880163 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2ed71c81 2019-11-27T11:42:08 Vulkan: Isolate DisplayVk.h from Display.cpp. With this change we no longer can access Vulkan (or Volk) headers in the ANGLE front-end. The only header that needs to be visible is the new "DisplayVk_api.h". This will simplify a bit of Volk integration. Also reworks how the entry points and headers are exposed to the tests. Bug: angleproject:3740 Change-Id: Ic1434f304619427ed6ad6370bc090ceb7858df94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1936707 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Emircan Uysaler e9b68f33 2019-11-19T19:34:24 Clean unused NewCreateImagePipeCmd This call is to be deprecated. Bug: angleproject:3905 Change-Id: Iffca3a3bee4d0ff930598635a27592e068696bbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1925032 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org>
Ethan Lee d83dc175 2019-11-20T01:50:36 GN: Only link to delayimp when d3d9 is enabled Bug: angleproject:4142 Change-Id: If7afac61386f205271997bcae53cd726a1786114 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1925253 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ethan Lee d22b8be4 2019-11-15T12:26:39 GN: Make X11 optional, based on a user-defined variable. Not all Linux platforms will have X11 available (Wayland, GGP), so we have to declare a variable that checks use_x11 separately. Bug: angleproject:4116 Change-Id: I7e33956da6344b8db4d4e32dbbd1b42f58f7019c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919632 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 6e687af2 2019-10-17T14:36:41 Support standalone Android builds in ANGLE. By disabling apk generation, we can build all of our targets in a standalone ANGLE checkout on Linux. This allows tools like gn desc to give us useful information about Android builds. BUG=angleproject:4026,angleproject:2344 Change-Id: Ic46348fd06c5174ce5e5a4d89ceb391246c6ac6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866080 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill e9603921 2019-10-31T14:33:26 Capture/Replay: Correct a few GLenum replay issues. This change refactors the GLenum utils into a non-autogenerated and an autogenerated portion. That makes it easier to modify the non-auto- generated bits to properly output GLenums even when the gl.xml data isn't totally correct. For instance, the "GetPName" group was missing a bunch of queries. Instead of trying to fix the GL we can simply fall back to querying the "Default" group when we return invalid enum. Also corrects a missing "0x" on hex output. Also allows the capture/replay sample to specify the correct binary data directory when testing a replay. Bug: angleproject:3611 Change-Id: I8e4c690b2850bb157a8cde8b057b20603e4b177d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1891008 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2f71802b 2019-10-28T11:48:46 GN: Don't expose glslang when unused. The ninja generation step could get confused if we try to build the glslang wrapper project on platforms that don't support glslang. Turn it off if the Metal / Vulkan back-ends are not enabled. Bug: angleproject:4053 Change-Id: If4dd2856681f18f4f45e952bf88e33371b9a1e3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1884010 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e55374f7 2019-10-24T12:55:12 GN: Explicitly add several Windows libs. These were not implicitly added in the Skia build. Bug: angleproject:4046 Change-Id: I0acdb4056e4598ea372b650dbd8044fe680187b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877483 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8ab0bf1f 2019-10-24T12:55:12 Fix warnings in xxhash. Again these were showing up in Skia. Bug: angleproject:4046 Change-Id: Ia295ac02b1e1d7bd4186243fc2bf38dffce43c2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877482 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 155947fc 2019-10-24T12:55:11 Enable "-Wconditional-uninitialized". This is a final warning used by Skia. Bug: angleproject:4046 Change-Id: I3970e30e4bd2aef07cddadd7322ef120ac857493 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877481 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 16370a65 2019-10-24T12:55:11 Enable "-Winconsistent-missing-destructor-override". This is purely a code style and consistency warning. Enabled to support building in Skia. Bug: angleproject:4046 Change-Id: Ibdcd06ded0195123e52c693851c43d0864e54ad1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877480 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c017cee9 2019-10-24T12:55:10 Enable "-Wundefined-reinterpret-cast". A couple cases popped up where we were using an undefined cast. Fix them by rearranging assignment macros to use decltype. Another warning that is enabled in Skia. Bug: angleproject:4046 Change-Id: Ibdbae0b2a96909b101a259ff805b8b2d43a5174b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877479 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 68945f1c 2019-10-24T12:55:09 Enable "-Wredundant-parens". This one is also required by Skia. It's purely for consistency and code readability. Bug: angleproject:4046 Change-Id: I9ed418a0bf6c7661f0970fef6da7088ca6ae6204 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877478 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a6206854 2019-10-24T12:55:09 Enable "-Wmissing-field-initializers". This is another warning required by Skia. This one didn't find anything that surprising. Enabling the warning does help enforce code consistency and avoids a bit of possible undefined behaviour. Bug: angleproject:4046 Change-Id: Ifec7f4afad49cd820bf3c0a79df3f46559473ee2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877477 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 859ca039 2019-10-24T12:55:08 Enable "-Wshadow-field". This warning verifies we don't give variables names that shadow fields. This is another good warning to enable that Skia requires. This CL also fixes a small number of points in code that used this bad pattern. We have to disable the warning for Glslang for now. Bug: angleproject:4046 Change-Id: I072a686e3023b60cfafa778525fe712ce1fb5a50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877476 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill fd58d22c 2019-10-24T12:55:07 Enable "-Wtautological-type-limit-compare". This is used by Skia. It seems like a good this to enable in any case. It verifies that we don't do pointless comparisons like "int < INTMAX". Fix the one instance by using the base checked numeric helpers. Bug: angleproject:4046 Change-Id: Ie14a9cb2754df52929591281062d92ef70df8f97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877474 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 299b1baf 2019-10-24T09:29:18 GN: Fix one missing check for 'angle_has_build'. This was blocking using our GN files in Skia. Bug: angleproject:4046 Change-Id: I12887a53c5f92b0e00206f8d391a8d03433b5e6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877475 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a9f11bf1 2019-10-21T08:39:14 GN: Separate out constructor/destructor warnings. This will allow for the capture/replay sample to disable the warnings. We'd like to keep them enabled for most of ANGLE code. Bug: angleproject:3611 Change-Id: I3cc7af26fa54c03cc5b79727e7b403a1b218a903 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1869544 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Le Quyen a48f95ab 2019-10-14T14:49:49 Move Vulkan GlslangWrapper code to a shared location. Metal backend will reuse Vulkan's GlslangWrapper code. The Metal backend will use this code to translate glsl to spirv then cross compile to Metal Shading Language using spirv-cross. So the source code of GlslangWrapper should be moved outside vulkan folder. Bug: angleproject:2634 Change-Id: I208062daf0d77756c9d32cfdab925b7dfdf83e05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1858042 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 93121f36 2019-10-17T08:18:16 Make invalid extension directive a CHROMEOS warning This change allows extension directive after ESSL1.0 non-preprocessor tokens on CHROMEOS. CHROMEOS kiosks have a video player that violates this spec requirement so just flagging as a warning to prevent failed video playback. Added ANGLE_PLATFORM_CHROMEOS define to build config in order to only make this a warning on CHROMEOS. Split the ESSL1 & ESSL3 cases back out as ESSL3 had always been an error on all platforms in the past and so want to keep it that way. Bug: 1003005 Bug: angleproject:4023 Change-Id: Ia931b3a8dad82dbda4c9c9e49a9c1090116397b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866464 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Jamie Madill 48aa52f7 2019-10-17T07:56:53 Fix broken GN "all_dependent_configs". This regressed with http://crrev.com/c/1864726 . Only fails in configs that specify 'use_fuzzing_engine'. Bug: angleproject:4021 Change-Id: I7cd4ab1d91525074c44a6ea2a9d8c41d9b9e437e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866074 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ed6e230e 2019-10-16T18:19:05 Vulkan: Re-enable release ASSERTs. This change will broadcast the release asserts config to all ANGLE targets. Instead of the ones that inherited from angle_common. Bug: angleproject:4021 Change-Id: I574b01d47e85004f69fb59856cac7b10f0d8d170 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1864726 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Quyen d200a77a 2019-10-10T00:44:01 Metal backend skeleton implementation. Bug: angleproject:2634 Change-Id: I34be82f4a80a6851fecb53a51e069b134d82613a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849079 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1ba72546 2019-10-04T15:17:49 GN: Allow building without /build/ folder. This will allow for ANGLE to be used in the Skia build. Bug: angleproject:3943 Change-Id: Idd1840f4445c63e696a7cdcd8b873623b8408306 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1835346 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 1f08ab28 2019-10-03T16:22:52 Re-land "GN: Componentize vulkan back-end build." Re-land fixes angle_end2end_tests disabling Vulkan. This moves the build configuration into the Vulkan back-end dir. This should be a little easier to maintain as all Vulkan-related config is in one place. Note that this should not interfere with Skia's build as they do not import the Vulkan back-end sources. One additional possiblity that this enables is testing other compile-time permutations of the Vulkan back-end more easily. For example we could make a simple change to enable compile testing of the Vulkan back-end with custom command buffers disabled. Also fixes a few errors affecting less tested configs. Bug: angleproject:3943 Change-Id: I0161668abcc58fcf529dde120998d4b99445fdd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1838454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2328d65a 2019-10-03T02:27:07 Revert "GN: Componentize vulkan back-end build." This reverts commit d46e2fb1e341a7ba7da56072658d3b4b1a540077. Reason for revert: Broke Vulkan angle_end2end_tests. Bug: angleproject:3954 Original change's description: > GN: Componentize vulkan back-end build. > > This moves the build configuration into the Vulkan back-end dir. > This should be a little easier to maintain as all Vulkan-related > config is in one place. > > Note that this should not interfere with Skia's build as they do > not import the Vulkan back-end sources. > > One additional possiblity that this enables is testing other > compile-time permutations of the Vulkan back-end more easily. For > example we could make a simple change to enable compile testing > of the Vulkan back-end with custom command buffers disabled. > > Also fixes a few errors affecting less tested configs. > > Bug: angleproject:3943 > Change-Id: Iaf819936896e4f5d3e6415ed16ab0c940e46cdb6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1829662 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Tobin Ehlis <tobine@google.com> TBR=tobine@google.com,jonahr@google.com,jmadill@chromium.org Change-Id: I7cf3db4f6b7d8b779625ea2491172bb429b498a9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3943 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1837233 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d46e2fb1 2019-09-27T16:22:35 GN: Componentize vulkan back-end build. This moves the build configuration into the Vulkan back-end dir. This should be a little easier to maintain as all Vulkan-related config is in one place. Note that this should not interfere with Skia's build as they do not import the Vulkan back-end sources. One additional possiblity that this enables is testing other compile-time permutations of the Vulkan back-end more easily. For example we could make a simple change to enable compile testing of the Vulkan back-end with custom command buffers disabled. Also fixes a few errors affecting less tested configs. Bug: angleproject:3943 Change-Id: Iaf819936896e4f5d3e6415ed16ab0c940e46cdb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1829662 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Tobin Ehlis f22f16d3 2019-07-18T15:10:49 Reland "Vulkan: Use VK repos' internal BUILD.gn files" This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6 There was a missing build dependence causing a build no-op issue which has now been fixed in the upstream Vulkan Validation Layer repo. Primary workaround that need to be re-visted and fixed are: 1. Disabled validation layers on 32-bit Windows 2. Disabled validation layers on 32-bit Android 3. Disabled DebugUtils on Android, using DebugReport instead 4. Using custom VK Loader branch to avoid WDK dependence Original change's description: > Vulkan: Use VK repos' internal BUILD.gn files > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > files so switched ANGLE to use those by default. > Also Validation Layer, Loader, and Tools repos no longer uses codegen > so this speeds up the build overall. > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > to VK_LAYER_KHRONOS_validation unified layer. > > This changes includes a temporary workaround to the Vulkan-Loader repo > to remove its Window's build dependence on WDK. There are plans to > remove that depenedence in Loader master, but until then we can use > our custom branch workaround. > It also includes a custom branch for validation layers that includes > some build fixes for ANGLE. > Finally, the layers were crashing on Android when attempting to use > DebugUtils extension so forcing DebugReport on Android for now. > > Bug: angleproject:2449 > Bug: angleproject:3320 > Bug: angleproject:3852 > Bug: angleproject:3924 > Bug: angleproject:3925 > Bug: angleproject:3946 > Bug: chromium:997009 > Bug: chromium:997016 > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Tobin Ehlis <tobine@google.com> Bug: angleproject:2449, angleproject:3320, angleproject:3852 Change-Id: I373ada091a1329db5e304874079428d01ba21d52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778302 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Yuly Novikov 7f506bde 2019-09-26T23:13:42 Revert "Disable swiftshader on Fuchsia" This reverts commit b67102b1940ec4ce1da7eacdb4a171b7f3c44ba7. Reason for revert: breaks ANGLE roll into Chromium https://chromium-review.googlesource.com/c/chromium/src/+/1827833 https://ci.chromium.org/p/chromium/builders/try/fuchsia_arm64/391223 https://ci.chromium.org/p/chromium/builders/try/fuchsia_x64/390587 Original change's description: > Disable swiftshader on Fuchsia > > SwiftShader is not needed on Fuchsia because the platform is expected to > provide Vulkan on all devices. > > Bug: fuchsia:37278 > Change-Id: I96d49f51dbe473bd032ec966137f35d2df9b6884 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1822863 > Reviewed-by: Michael Spang <spang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=spang@chromium.org,jmadill@chromium.org,sergeyu@chromium.org Change-Id: I39dabd1cc8de3bbef2c9fe233270a21de3782900 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: fuchsia:37278 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1828317 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Sergey Ulanov b67102b1 2019-09-24T13:32:51 Disable swiftshader on Fuchsia SwiftShader is not needed on Fuchsia because the platform is expected to provide Vulkan on all devices. Bug: fuchsia:37278 Change-Id: I96d49f51dbe473bd032ec966137f35d2df9b6884 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1822863 Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 49fd27d9 2019-09-23T12:41:44 Fix SwiftShader to use data_deps. Using deps instead of data_deps was causing some tests to try and load vk_swiftshader every test execution. Even if the test was not using Vulkan in ANGLE. Fixes the TSAN gpu_unittests in Chromium. Bug: angleproject:3876 Change-Id: I2acbf02ab9aa39632bc252c12e19da28ad90175d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815910 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 8be7a4c7 2019-09-19T12:48:31 Re-land "Vulkan: SwiftShader integration." Re-land fixes Win7 configs and placement of the SwiftShader module for ASAN/TSAN configs. Adds a new EGL extension for picking SwiftShader when using the Vulkan back-end. Also cleans up ICD enabling code RendererVk. Also includes a change to a buffer size necessary to support SwiftShader's minimum limits. Bug: angleproject:3876 Bug: b/140251624 Change-Id: I5e16057ac4de07bbdbbd248542b1b9103133294f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1810065 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 2249fef2 2019-09-16T11:19:23 Capture/Replay: Move stub implementation to new file. This lets the MSVC parser work better with FrameCapture.cpp. Bug: angleproject:3611 Change-Id: I249106dce81a7965684caf1a835f0472b34e8963 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1804878 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Austin Kinross 11dc1635 2019-09-18T14:46:23 Add support for generating UWP (Windows Store) projects again Until late 2017, ANGLE supported Windows Store apps on Windows 8.1, Windows Phone 8.1, and Windows 10 (via the Universal Windows Platform, aka UWP). Unfortunately ANGLE deprecated support for Windows Store when it switched from GYP to GN in 2017. Since then, users have been able to use Microsoft\angle for their UWP apps but this isn't ideal since it's based on a 2017 copy of Google\angle. This PR bring back support for UWPs, so that UWP users can use Google\angle again. Specifically it: - Adds support for generating UWP projects via GN - Adds helper/util functions specific to UWP (they're mostly similar to the desktop Windows helpers) - Fixes some existing Windows Store code that's rotted since 2017 - Disables async shader compilation for UWPs, since its implementation calls wait on the UI thread (which is forbidden in UWPs) - Renames 'ANGLE_ENABLE_WINDOWS_STORE' to 'ANGLE_ENABLE_WINDOWS_UWP', since ANGLE only support UWPs now - Fixes misc other related issues (such as dependencies on D3D9 headers in API-agnostic code) Note that this doesn't bring back support for Windows/Phone 8.1. BUG=angleproject:3922 Change-Id: Ia79ae05a5e0e0a0625eb633bf1928722dfd3e85f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1811871 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Zhenyao Mo db7a36f4 2019-09-17T00:22:32 Revert "Vulkan: SwiftShader integration." This reverts commit 1224802c214d8f3d5b1f31a35d4461ada39b94c1. Reason for revert: https://bugs.chromium.org/p/angleproject/issues/detail?id=3912 Original change's description: > Vulkan: SwiftShader integration. > > Adds a new EGL extension for picking SwiftShader when using the Vulkan > back-end. Also cleans up ICD enabling code RendererVk. Also includes a > change to a buffer size necessary to support SwiftShader's minimum > limits. > > 32-bit is currently left disabled to work around an issue on AMD Win7. > > Bug: angleproject:3876 > Bug: b/140251624 > Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org Change-Id: Id7464250f6941b0228a6b2a9bd0349823727275b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3876, b/140251624 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808101 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Jamie Madill 1224802c 2019-09-16T15:17:33 Vulkan: SwiftShader integration. Adds a new EGL extension for picking SwiftShader when using the Vulkan back-end. Also cleans up ICD enabling code RendererVk. Also includes a change to a buffer size necessary to support SwiftShader's minimum limits. 32-bit is currently left disabled to work around an issue on AMD Win7. Bug: angleproject:3876 Bug: b/140251624 Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Emircan Uysaler 1552d4d6 2019-09-12T20:21:07 Move to NewCreateImagePipe2Cmd Bug: angleproject:3905 Change-Id: Id237c049848077acee8eaf491f7aada636764290 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1802535 Reviewed-by: Michael Spang <spang@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Todd Eisenberger a1bf6996 2019-09-03T13:39:03 Fuchsia: Migrate to new libasync-loop API Bug: None Change-Id: Ieadbe830847068c8e9dc96773dbb9b65c8b9ccd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1783418 Reviewed-by: Michael Spang <spang@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Shahbaz Youssefi 050b124d 2019-06-30T03:26:18 Reland "Vulkan: Debug overlay" This is a reland of e54d0f90d1a165404236fd7abd1b05ddd041a686 This was reverted due to a build failure as a result of a missing virtual destructor in the widget base class. Original change's description: > Vulkan: Debug overlay > > A debug overlay system for the Vulkan backend designed with efficiency > and runtime configurability in mind. Overlay widgets are of two > fundamental types: > > - Text widgets: A single line of text with small, medium or large font. > - Graph widgets: A bar graph of data. > > Built on these, various overlay widget types are defined that gather > statistics. Five such types are defined with one widget per type as > example: > > - Count: A widget that counts something. VulkanValidationMessageCount > is an overlay widget of this type that shows the number of validation > messages received from the validation layers. > - Text: A generic text. VulkanLastValidationMessage is an overlay > widget of this type that shows the last validation message. > - PerSecond: A value that gets reset every second automatically. FPS is > an overlay widget of this type that simply gets incremented on every > swap(). > - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an > overlay of this type. On every vkQueueSubmit, the number of nodes in > the command graph is accumulated. On every present(), the value is > taken as the number of nodes for the whole duration of the frame. > - RunningHistogram: A histogram of last N values. Input values are in > the [0, 1] range and they are ranked to N buckets for histogram > calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay > widget of this type. On vkQueueSubmit, the memory waste from command > buffer pool allocations is recorded in the histogram. > > Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py > processes to create an array of bits, which is processed at runtime to > create the actual font image (an image with 3 layers). > > The overlay widget layout is defined in overlay_widgets.json which > gen_overlay_widgets.py processes to generate an array of widgetss, each > of its respective type, and sets their properties, such as color and > bounding box. The json file allows widgets to align against other > widgets as well as against the framebuffer edges. > > Two compute shaders are implemented to efficiently render the UI: > > - OverlayCull: This shader creates a bitset of Text and Graph widgets > whose bounding boxes intersect a corresponding subgroup processed by > OverlayDraw. This is done only when the enabled overlay widgets are > changed (a feature that is not yet implemented) or the surface is > resized. > - OverlayDraw: Using the bitsets generated by OverlayCull, values that > are uniform for each workgroup (set to be equal to hardware subgroup > size), this shader loops over enabled widgets that can possibly > intersect the pixel being processed and renders and blends in texts > and graphs. This is done once per frame on present(). > > Currently, to enable overlay widgets an environment variable is used. > For example: > > $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste > $ ./hello_triangle --use-angle=vulkan > > Possible future work: > > - On Android, add settings in developer options and enable widgets based > on those. > - Spawn a small server in ANGLE and write an application that sends > enable/disable commands remotely. > - Implement overlay for other backends. > > Bug: angleproject:3757 > Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:3757 Change-Id: I47915d88b37b6f882c686c2de13fca309a10b572 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1780897 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 44a0e734 2019-09-02T13:55:59 Re-enable -Wextra-semi-stmt. Now that the DEPS roller is fixed this should not be able to break the CQ. Bug: angleproject:3128 Change-Id: I0f51b5d8a7b71859cced335ca9bd6ad155637ec5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1781619 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez fc58af47 2019-09-02T07:46:44 Revert "Vulkan: Debug overlay" This reverts commit e54d0f90d1a165404236fd7abd1b05ddd041a686. Reason for revert: causes compile failure on Linux CFI bot. Sample build: https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/14810 Sample log: https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8903575125463586160/+/steps/compile/0/stdout?format=raw Original change's description: > Vulkan: Debug overlay > > A debug overlay system for the Vulkan backend designed with efficiency > and runtime configurability in mind. Overlay widgets are of two > fundamental types: > > - Text widgets: A single line of text with small, medium or large font. > - Graph widgets: A bar graph of data. > > Built on these, various overlay widget types are defined that gather > statistics. Five such types are defined with one widget per type as > example: > > - Count: A widget that counts something. VulkanValidationMessageCount > is an overlay widget of this type that shows the number of validation > messages received from the validation layers. > - Text: A generic text. VulkanLastValidationMessage is an overlay > widget of this type that shows the last validation message. > - PerSecond: A value that gets reset every second automatically. FPS is > an overlay widget of this type that simply gets incremented on every > swap(). > - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an > overlay of this type. On every vkQueueSubmit, the number of nodes in > the command graph is accumulated. On every present(), the value is > taken as the number of nodes for the whole duration of the frame. > - RunningHistogram: A histogram of last N values. Input values are in > the [0, 1] range and they are ranked to N buckets for histogram > calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay > widget of this type. On vkQueueSubmit, the memory waste from command > buffer pool allocations is recorded in the histogram. > > Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py > processes to create an array of bits, which is processed at runtime to > create the actual font image (an image with 3 layers). > > The overlay widget layout is defined in overlay_widgets.json which > gen_overlay_widgets.py processes to generate an array of widgetss, each > of its respective type, and sets their properties, such as color and > bounding box. The json file allows widgets to align against other > widgets as well as against the framebuffer edges. > > Two compute shaders are implemented to efficiently render the UI: > > - OverlayCull: This shader creates a bitset of Text and Graph widgets > whose bounding boxes intersect a corresponding subgroup processed by > OverlayDraw. This is done only when the enabled overlay widgets are > changed (a feature that is not yet implemented) or the surface is > resized. > - OverlayDraw: Using the bitsets generated by OverlayCull, values that > are uniform for each workgroup (set to be equal to hardware subgroup > size), this shader loops over enabled widgets that can possibly > intersect the pixel being processed and renders and blends in texts > and graphs. This is done once per frame on present(). > > Currently, to enable overlay widgets an environment variable is used. > For example: > > $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste > $ ./hello_triangle --use-angle=vulkan > > Possible future work: > > - On Android, add settings in developer options and enable widgets based > on those. > - Spawn a small server in ANGLE and write an application that sends > enable/disable commands remotely. > - Implement overlay for other backends. > > Bug: angleproject:3757 > Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org Bug: angleproject:3757 Change-Id: Ib08e2e7b1a9449ca097673acb11655df5d2bbf31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778862 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Shahbaz Youssefi e54d0f90 2019-06-30T03:26:18 Vulkan: Debug overlay A debug overlay system for the Vulkan backend designed with efficiency and runtime configurability in mind. Overlay widgets are of two fundamental types: - Text widgets: A single line of text with small, medium or large font. - Graph widgets: A bar graph of data. Built on these, various overlay widget types are defined that gather statistics. Five such types are defined with one widget per type as example: - Count: A widget that counts something. VulkanValidationMessageCount is an overlay widget of this type that shows the number of validation messages received from the validation layers. - Text: A generic text. VulkanLastValidationMessage is an overlay widget of this type that shows the last validation message. - PerSecond: A value that gets reset every second automatically. FPS is an overlay widget of this type that simply gets incremented on every swap(). - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an overlay of this type. On every vkQueueSubmit, the number of nodes in the command graph is accumulated. On every present(), the value is taken as the number of nodes for the whole duration of the frame. - RunningHistogram: A histogram of last N values. Input values are in the [0, 1] range and they are ranked to N buckets for histogram calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay widget of this type. On vkQueueSubmit, the memory waste from command buffer pool allocations is recorded in the histogram. Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py processes to create an array of bits, which is processed at runtime to create the actual font image (an image with 3 layers). The overlay widget layout is defined in overlay_widgets.json which gen_overlay_widgets.py processes to generate an array of widgetss, each of its respective type, and sets their properties, such as color and bounding box. The json file allows widgets to align against other widgets as well as against the framebuffer edges. Two compute shaders are implemented to efficiently render the UI: - OverlayCull: This shader creates a bitset of Text and Graph widgets whose bounding boxes intersect a corresponding subgroup processed by OverlayDraw. This is done only when the enabled overlay widgets are changed (a feature that is not yet implemented) or the surface is resized. - OverlayDraw: Using the bitsets generated by OverlayCull, values that are uniform for each workgroup (set to be equal to hardware subgroup size), this shader loops over enabled widgets that can possibly intersect the pixel being processed and renders and blends in texts and graphs. This is done once per frame on present(). Currently, to enable overlay widgets an environment variable is used. For example: $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste $ ./hello_triangle --use-angle=vulkan Possible future work: - On Android, add settings in developer options and enable widgets based on those. - Spawn a small server in ANGLE and write an application that sends enable/disable commands remotely. - Implement overlay for other backends. Bug: angleproject:3757 Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2b7e2acb 2019-08-30T13:26:37 Vulkan: Move loader defines into BUILD.gn. We shouldn't need the extra loader defines config variable. The defines we need should probably be able to be located in ANGLE entirely. Bug: angleproject:3320 Bug: angleproject:3876 Change-Id: I78f449f44c1709b6d683930f9b9ea3d80016272e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1775462 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis aae21ef6 2019-08-29T21:56:06 Revert "Reland "Vulkan: Use VK repos' internal BUILD.gn files"" This reverts commit 0ad1559f3ae95efecaa209f990987d3ce4ebd150. Reason for revert: linux-rel no-op build issue showing up in Chromium integration. Tracking in chromium:997016 Original change's description: > Reland "Vulkan: Use VK repos' internal BUILD.gn files" > > This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6 > > Original change's description: > > Vulkan: Use VK repos' internal BUILD.gn files > > > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > > files so switched ANGLE to use those by default. > > Also Validation Layer, Loader, and Tools repos no longer uses codegen > > so this speeds up the build overall. > > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > > to VK_LAYER_KHRONOS_validation unified layer. > > > > This changes includes a temporary workaround to the Vulkan-Loader repo > > to remove its Window's build dependence on WDK. There are plans to > > remove that depenedence in Loader master, but until then we can use > > our custom branch workaround. > > It also includes a custom branch for validation layers that includes > > some build fixes for ANGLE. > > Finally, the layers were crashing on Android when attempting to use > > DebugUtils extension so forcing DebugReport on Android for now. > > > > Bug: angleproject:2449 > > Bug: angleproject:3320 > > Bug: angleproject:3852 > > Bug: chromium:997009 > > Bug: chromium:997016 > > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Tobin Ehlis <tobine@google.com> > > Bug: angleproject:2449, angleproject:3320, angleproject:3852 > Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036 > Commit-Queue: Tobin Ehlis <tobine@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org Change-Id: I88afdaff07e9f414f9de02f6d3651eaba9a5045f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2449, angleproject:3320, angleproject:3852 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776920 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 0ad1559f 2019-07-18T15:10:49 Reland "Vulkan: Use VK repos' internal BUILD.gn files" This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6 Original change's description: > Vulkan: Use VK repos' internal BUILD.gn files > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > files so switched ANGLE to use those by default. > Also Validation Layer, Loader, and Tools repos no longer uses codegen > so this speeds up the build overall. > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > to VK_LAYER_KHRONOS_validation unified layer. > > This changes includes a temporary workaround to the Vulkan-Loader repo > to remove its Window's build dependence on WDK. There are plans to > remove that depenedence in Loader master, but until then we can use > our custom branch workaround. > It also includes a custom branch for validation layers that includes > some build fixes for ANGLE. > Finally, the layers were crashing on Android when attempting to use > DebugUtils extension so forcing DebugReport on Android for now. > > Bug: angleproject:2449 > Bug: angleproject:3320 > Bug: angleproject:3852 > Bug: chromium:997009 > Bug: chromium:997016 > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Tobin Ehlis <tobine@google.com> Bug: angleproject:2449, angleproject:3320, angleproject:3852 Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Michael Spang 7cd5f64a 2019-08-21T20:03:49 Move default ANGLE platform type out of main switch/case The "default" platform type isn't really a discrete type, and treating it that way leads to duplication. Make the default platform just map to another platform enum. After this change, setting args to angle_enable_opengl=false angle_enable_vulkan=true under X11 results in a default of vulkan; previously we would hit UNREACHABLE() due to not handling this case. Bug: angleproject:3847 Change-Id: I1dc093ef8a2f5b93721cb1ebda0a8c3ec4a7d2f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1521321 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Jamie Madill 5f3c98de 2019-08-23T01:05:38 Revert "Vulkan: Use VK repos' internal BUILD.gn files" This reverts commit 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6. Reason for revert: Causing flakiness in "confirm no-op" CQ step. See issue for more details. Bug: chromium:997016 Original change's description: > Vulkan: Use VK repos' internal BUILD.gn files > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > files so switched ANGLE to use those by default. > Also Validation Layer, Loader, and Tools repos no longer uses codegen > so this speeds up the build overall. > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > to VK_LAYER_KHRONOS_validation unified layer. > > This changes includes a temporary workaround to the Vulkan-Loader repo > to remove its Window's build dependence on WDK. There are plans to > remove that depenedence in Loader master, but until then we can use > our custom branch workaround. > It also includes a custom branch for validation layers that includes > some build fixes for ANGLE. > Finally, the layers were crashing on Android when attempting to use > DebugUtils extension so forcing DebugReport on Android for now. > > Bug: angleproject:2449 > Bug: angleproject:3320 > Bug: angleproject:3852 > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Tobin Ehlis <tobine@google.com> TBR=ynovikov@chromium.org,tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org Change-Id: Iec97ba8cb5c38fa56bfd4c0afb0f7af8d68513ff No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2449, angleproject:3320, angleproject:3852 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767363 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Daksh Idnani 5ec04880 2019-08-22T21:12:08 Reland "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" This reverts commit 58940f67acd5b89f1c338b134a596864595fcdca. Reason for revert: pixel test failures have been triaged in Gold. Relanding. Original change's description: > Revert "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" > > This reverts commit 720a8bab0eca86e5b9b8c07c200a217fb2c65755. > > Reason for revert: pixel test failures per http://crbug.com/984780#c13 > > Original change's description: > > Make Mac SystemInfo reflect the currently active GPU on dual GPU machines > > > > Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) > > on dual GPU Macs always updates the active GPU field of the SystemInfo > > instance to the first non-Intel GPU it finds. This change overrides the > > activeGPUIndex field of the SystemInfo instance to reflect the current GPU > > instead of the non-intel GPU. > > > > Bug: 985486, 984780, angleproject:3701 > > Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 > > Commit-Queue: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Zhenyao Mo <zmo@chromium.org> > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > TBR=zmo@chromium.org,geofflang@chromium.org,kbr@chromium.org,dakshidnani@google.com > > Change-Id: Iacf4b8433ac1aa4d30c51f08ddfc6489af440cc4 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 985486, 984780, angleproject:3701 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757373 > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Bug: 985486, 984780, angleproject:3701 Change-Id: I8f2f26f68329a2826a92742c46471b8c092b36ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1765963 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Tobin Ehlis 552f5fcb 2019-07-18T15:10:49 Vulkan: Use VK repos' internal BUILD.gn files This retires custom BUILD.gn files for the Vulkan Headers, Tools, Validation-Layers, and Loader repos. They now have integrated BUILD.gn files so switched ANGLE to use those by default. Also Validation Layer, Loader, and Tools repos no longer uses codegen so this speeds up the build overall. Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer to VK_LAYER_KHRONOS_validation unified layer. This changes includes a temporary workaround to the Vulkan-Loader repo to remove its Window's build dependence on WDK. There are plans to remove that depenedence in Loader master, but until then we can use our custom branch workaround. It also includes a custom branch for validation layers that includes some build fixes for ANGLE. Finally, the layers were crashing on Android when attempting to use DebugUtils extension so forcing DebugReport on Android for now. Bug: angleproject:2449 Bug: angleproject:3320 Bug: angleproject:3852 Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Jonah Ryan-Davis 58940f67 2019-08-22T15:40:58 Revert "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" This reverts commit 720a8bab0eca86e5b9b8c07c200a217fb2c65755. Reason for revert: <INSERT REASONING HERE> Original change's description: > Make Mac SystemInfo reflect the currently active GPU on dual GPU machines > > Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) > on dual GPU Macs always updates the active GPU field of the SystemInfo > instance to the first non-Intel GPU it finds. This change overrides the > activeGPUIndex field of the SystemInfo instance to reflect the current GPU > instead of the non-intel GPU. > > Bug: 985486, 984780, angleproject:3701 > Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 > Commit-Queue: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Zhenyao Mo <zmo@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> TBR=zmo@chromium.org,geofflang@chromium.org,kbr@chromium.org,dakshidnani@google.com Change-Id: Iacf4b8433ac1aa4d30c51f08ddfc6489af440cc4 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 985486, 984780, angleproject:3701 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757373 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Daksh Idnani 720a8bab 2019-08-12T16:56:45 Make Mac SystemInfo reflect the currently active GPU on dual GPU machines Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) on dual GPU Macs always updates the active GPU field of the SystemInfo instance to the first non-Intel GPU it finds. This change overrides the activeGPUIndex field of the SystemInfo instance to reflect the current GPU instead of the non-intel GPU. Bug: 985486, 984780, angleproject:3701 Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jiacheng Lu 617f23d1 2019-08-12T10:11:53 Fix frame capture build for Android Bug: angleproject:3611 Change-Id: I65018823a8d7223de0f63ea5bd6a573f62f1c24b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1748884 Commit-Queue: Jiacheng Lu <lujc@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Darpinian 7e48c9eb 2019-08-06T17:17:19 Add explicit integer casts WebKit uses the -Wshorten-64-to-32 flag which warns on these cases. Bug: 3439 Change-Id: I8c1de60da0f173ca2036e2120e79b857f5f2775f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1740866 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jiacheng Lu 9e14a19b 2019-08-09T10:03:24 EVENT trace to print GLenum as string reland Reland of CL https://chromium-review.googlesource.com/c/angle/angle/+/1737141 Bug: angleproject:3778 Change-Id: I2a43c618de032d6e6286d707fbc88241ad4c19ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1745837 Commit-Queue: Jiacheng Lu <lujc@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Darpinian efa898ac 2019-08-07T17:05:35 Enable some compiler warnings used by WebKit. This will make it easier to roll ANGLE in WebKit. Bug: angleproject:3439 Change-Id: Icd4a5a2d5dcabb6cf13d4b46a7547f49610fa4b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1743057 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
James Darpinian 64751a0b 2019-08-07T15:08:51 Reenable extra_warnings config for angle_utils Originally disabled in https://crrev.com/c/1738438. Bug: angleproject:1459 Change-Id: I95172dc95a5d3e9d838c542ee6bcfb2338ffc9a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1743078 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Darpinian 22ec7dc9 2019-08-06T10:10:52 Remove all global constructors and exit time destructors. WebKit compiles with -Wglobal-constructors, so they want this. I decided to do -Wexit-time-destructors at the same time. Bug: angleproject:3439 Bug: angleproject:1459 Change-Id: I4b44ae4f8e6f066e07dc7f9f6ced9a5d49dc8f8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1738438 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill eb1b1646 2019-07-30T17:22:17 Capture/Replay: Fix capture-enabled libs build. Adds a build option to use the capture libraries in the default output location for libGLESv2. With |angle_with_capture_by_default| enabled, libGLESv2 will have capture enabled and the non-capture libGLESv2 is built as libGLESv2_no_capture. Also moves the FrameCapture to be owned by gl::Context. Rearranges the code a bit so that we don't require a separate version of libANGLE for capture. Also implements a read pixels entry point parameter. Bug: angleproject:3611 Change-Id: Ic528e43e4779f794c8b6d0bf35410166dacc81b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1719064 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiacheng Lu 73e5e9b5 2019-07-22T15:26:17 Clang warn implicit float to int conversion 1. add '-Wfloat-conversion' in compiler flag for clang 2. fix existed implicit float conversion Bug: angleproject:3728 Change-Id: I0dc07eeb74c5d6dc480c6f0aa88bc75ab98e4292 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1713741 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 6a02f06d 2019-07-18T16:27:14 Implement EGL_ANGLE_create_context_backwards_compatible This extension allows the user to specify if ANGLE should create a context of the exact requested version or a higher version context that is backwards compatible. BUG=angleproject:3425 Change-Id: I7d0b75cdd7e34a2fc888aa238e1eeb67af82ae0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601560 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Clemen Deng 6e7dd1ef 2019-07-16T13:41:59 Generate openGL32.dll in a separate output folder This is to avoid loading it locally and so that the pdb works Bug: angleproject:3641 Change-Id: I2ce93ace47d1e6a1013d38964e5919084ad4ff7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1704634 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Clemen Deng <clemendeng@google.com>
Clemen Deng 663b0481 2019-07-11T12:37:35 Load correct opengl32.dll Tests are still loading ANGLE's opengl32.dll instead of system's This is because external drivers are trying to load opengl32.dll Workaround: renamed to libGL.dll, need to change back when copying dll over for loading Bug: angleproject:3641 Change-Id: I051adc1fbb488a704c99718ad4a2f74bb7756cbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1697290 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ecd2e3b1 2019-07-09T15:39:39 GL: Reset the texture base level before uploads on Mac. Reset the base level of textures before call glTexImage on Mac to prevent driver bugs that cause texture corruption. BUG=angleproject:3671 Change-Id: I90e94b8395a781a2142ef6be3af1d6117f084152 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1692975 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Clemen Deng cb8b4a57 2019-07-04T16:05:25 Rename "opengl32" to "libGL" Bug: angleproject:3651 Change-Id: I1af052da9bc2f64f2f29ea411902272987f21a0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688178 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 612b7417 2019-07-05T11:13:30 Capture/Replay: Add frame capture to cpp files. Capture is implemented mostly via code auto-generation. The capture requires a bit of custom logic for each captured pointer parameter. We handle this by using auto-generation to lay out the base template for each GL call and then custom logic that uses ANGLE's internals to know how much data to capture at which point. Client array pointers are captured before each draw call. Currently only GLES capture is supported. We write out cpp files and an optional data file accompanying each cpp. For small data chunks we inline them in the cpp files. For bigger chunks like texture data we pack them into the data file. Mid-execution capture is not yet supported. Configuring the capture is currently only available by modifying the cpp sources. Both of these features will be implemented in the future. Bug: angleproject:3611 Change-Id: If6d5dac2f7bf363129d42ea9198162aef0d3a4ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1671904 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Clemen Deng 7558e836 2019-06-18T13:02:03 Windows Desktop GL Implementation Bug: angleproject:3620 Change-Id: I4ef4ab3ee145e5ce9b1ebf0c2d61d0777db72c43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678405 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 77c8496b 2019-06-28T11:24:27 Re-land "Cleanup angle_libs_suffix in BUILD.gn." We can use output_name instead of repeating the libs suffix in the GN files. The re-land adds automatic suffix application on Android. This makes the configuration a bit simpler and should detect future breakage. Also cleans up some of the "angle_libraries" code. Bug: angleproject:3611 Change-Id: I4971d1085ca67802c916655c30efb7df4001f040 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679993 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3e6e70bb 2019-06-28T14:45:49 Revert "Cleanup angle_libs_suffix in BUILD.gn." This reverts commit 625f5b2fbd89eb04b2e24853502acadbd40f1f73. Reason for revert: Seems to break the Android build with suffix: ~/chromium/src$ gn args out/Release64 Waiting for editor on "/usr/local/google/home/cnorthrop/chromium/src/out/Release64/args.gn"... Generating files... ERROR Unresolved dependencies. //third_party/angle:compressed_symbols(//build/toolchain/android:android_clang_arm) needs //third_party/angle:libEGL_angle(//build/toolchain/android:android_clang_arm) //third_party/angle:compressed_symbols(//build/toolchain/android:android_clang_arm) needs //third_party/angle:libGLESv1_CM_angle(//build/toolchain/android:android_clang_arm) <snip> Original change's description: > Cleanup angle_libs_suffix in BUILD.gn. > > We can use output_name instead of repeating the libs suffix in the GN > files. > > Bug: angleproject:3611 > Change-Id: Ic87c1378aac8be8e1aec695ddbe5c8ec2ed3187b > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678403 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,timvp@google.com,jmadill@chromium.org Change-Id: I532d9cf28c21ddf65d820d3fc323c87dbc844d96 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3611 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679990 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 625f5b2f 2019-06-26T16:19:35 Cleanup angle_libs_suffix in BUILD.gn. We can use output_name instead of repeating the libs suffix in the GN files. Bug: angleproject:3611 Change-Id: Ic87c1378aac8be8e1aec695ddbe5c8ec2ed3187b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678403 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 067687f4 2019-05-29T12:48:49 Removal global locks from GL entry points. Always lock in EGL. The ANGLE Vulkan backend is now thread safe for non-share group contexts. This means that a global GL lock only adds overhead for most use cases. Remove the angle_force_thread_safety gn argument. BUG=angleproject:2464 Change-Id: Ic6ba89e18b46e5dd72aa83d0f409097441fcca3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635749 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Jamie Madill 20d380fa 2019-06-03T15:21:47 Print stack backtrace on critical failure. We reuse code from Skia to walk the stack on Posix platforms. See: https://github.com/google/skia/blob/master/tools/CrashHandler.cpp On Windows we use a BSD-licensed tool called StackWalker. See: https://github.com/JochenKalmbach/StackWalker This allows us to get high quality stack traces on Win/Linux/Mac. Bug: angleproject:3162 Change-Id: I9c50ede2c6a41ed0ee85a0507372df42a487bcef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1632950 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten 73e17bf7 2019-05-14T10:42:25 Android: Fix symbol compression logic Update the logic to compress ANGLE's symbols for Android to correctly include the necessary symbols. Bug: angleproject:3448 Test: Build and install APK, verify symbols are present during crash Change-Id: Ibb995aa775d47fb9921e4ab11b956c63ac474c30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1611750 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jonah Ryan-Davis 66e4850d 2019-04-25T10:49:05 Use EnumAdapters to properly detect primary GPU on Win EnumDisplayDevicesA returns the card that's connected to the display, but EnumAdapters return the adapter which the desktop primary is displayed at index 0. We can use this to determine the device used for graphics. Also cleans up the discrepancy between platforms on finding "primary" vs "active" GPU. Asserts that the GPU expected to run ANGLE commands is the active GPU, and deprecates the primary GPU to be equal to the active GPU. Bug: angleproject:3383 Change-Id: I422fba1bbe47d85b7c09e378d559eaebf89e2625 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1584360 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Cody Northrop 8cbd321c 2019-04-23T13:25:20 Android: Clean up the ANGLE APK * Rename the APK package name to reflect that it is from Chromium build. * Rename the application to reflect it is no longer used on Android system image. * Remove code supporting multiple APKs, since we only have one now. * Remove the placeholder icon, which is no longer needed. * Remove the ANGLE_FOR_ANDROID intent, since this APK is not built in. * Remove the java code since since it was only in support of the intent. * Remove most apps from the rules file. Bug: angleproject:3396 Change-Id: Ic6a2fd03e5686026ab4650fc0c25adb298af03c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1579389 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
David Worsham 62e274e8 2019-04-23T09:17:03 [scenic] Remove dangling viewsv1 reference Clean up the includes and imports for this module as well. BUG: angleproject:2475 TEST: Built cast_runner, web_runner Change-Id: Id283c265a4ec9d2ca74e3a0132e82f051b8864f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1579219 Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Ben Wagner 1e064014 2019-04-12T14:10:17 Fix 'not all control paths return a value' and add to extra_warnings Bug: angleproject:3356 Change-Id: I9831b2035bc1e887c6d5a68a444e69e2bf5aa60a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1565055 Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>