Граф коммитов

298 Коммитов

Автор SHA1 Сообщение Дата
Jamie Madill 3e6e70bba7 Revert "Cleanup angle_libs_suffix in BUILD.gn."
This reverts commit 625f5b2fbd.

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>
2019-06-28 14:46:01 +00:00
Jamie Madill 625f5b2fbd 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>
2019-06-28 12:18:15 +00:00
Geoff Lang 067687f467 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>
2019-06-21 15:26:18 +00:00
Jamie Madill 20d380fa5b 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>
2019-06-03 20:24:03 +00:00
Tim Van Patten 73e17bf7d9 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>
2019-05-15 22:28:39 +00:00
Jonah Ryan-Davis 66e4850d4b 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>
2019-05-06 15:41:51 +00:00
Cody Northrop 8cbd321caf 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>
2019-04-24 15:32:47 +00:00
David Worsham 62e274e86c [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>
2019-04-23 19:45:23 +00:00
Ben Wagner 1e064014eb 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>
2019-04-12 19:52:14 +00:00
Nico Weber 0de5b648da Remove explicit -Wextra-semi, -Winconsistent-missing-override flags.
They're  enabled via the chromium_code config already these days.
No intended behavior change.

Bug: chromium:926235,chromium:428099

Change-Id: I6927d6e3ec85f40454da61969d7a22dfabef1bde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1564781
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
2019-04-12 14:07:10 +00:00
Tobin Ehlis 134425c770 Vulkan:Integrate SecondaryCommandBuffers
Integrate the custom SecondaryCommandBuffer type into the CommandGraph
nodes by adding new ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS define that can
be set in the BUILD gn args with angle_enable_custom_vulkan_cmd_buffers
set to "true."
Initially the custom cmd buffers are disabled by default.

This adds some support functions to SecondaryCommandBuffer to make the
integration easier by matching the wrapped cmd buffer interface:
initialize(), end(), valid().

Bug: angleproject:3136
Change-Id: Ib910554583192550757bb8ce89914e3ea8737988
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1526556
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-21 15:02:33 +00:00
Yuly Novikov 6ce1be5a5a Vulkan: move platform defines to Vulkan Headers build file.
From angle_vulkan build target,
so that everyone including Vulkan Headers
would get them for the right platform.

Also remove obsolete defines.

Bug: angleproject:3279
Change-Id: I4bbbeb72acfbf0dd22a1d6a13bd9df7ddaec84dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1530029
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2019-03-19 21:57:45 +00:00
Rafael Cintron b6a2f6bcf6 Avoid unnecessary loading of D3D9.dll
D3D9.dll is being loaded by ANGLE when using D3D11. This change
removes the D3D9 dependency.

- Delayload D3D9.dll using ldflags in BUILD.gn

- Replace Renderer11 usage of DebugAnnotator9 with DebugAnnotator11.
Using debug annotations with Visual Studio PIX tools now requires Windows 10.

- Refactor DebugAnnotator11 to QI ID3DUserDefinedAnnotation from the
renderer's ID3D11DeviceContext instead of making a 'null' device.

Bug: angleproject:3234
Change-Id: I10a2b537e07cda2094b08abf02b7876bbe5009f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1508643
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-03-08 23:41:43 +00:00
Corentin Wallez 105bc9d7ba Revert "Allow enabling trace annotations"
This reverts commit f094bac949.

Reason for revert: Causes timeouts on Debug bots in the BufferDataTest.NULLData

Original change's description:
> Allow enabling trace annotations
> 
> Tracing was never allowed to happen because getStatus always returned
> false. Also want to allow tracing for release builds for perf analysis.
> 
> Bug: angleproject:3176
> Change-Id: I7aa94ed9fe3d7f67fe6dd10123c9badc7fb49d82
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1475248
> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
> Reviewed-by: Jamie Madill <jmadill@google.com>

TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@google.com,courtneygo@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: angleproject:3176
Change-Id: I91d28d15a092519551811a9a07c01987c9e028e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1505799
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-03-06 21:18:46 +00:00
Jamie Madill 55959b0bb1 Add glmark2 to build.
glmark2 is a an OpenGL ES 2.0 benchmark licensed under GPL v3.
See https://github.com/glmark2/glmark2

ANGLE can use glmark2 as a metric and guide for optimization. It will
add a number of useful performance tests. This CL adds the initial
build integration.

A follow-up CL will integrate glmark2 into our performance tests. Note
that glmark2 will not be shipped with Chrome or Android. It will only
be used on our test infrastructure.

Note that the data path solution is temporary. When integrated into
ANGLE we will make sure we CWD into the glmark2 directory before
running the benchmark.

Bug: angleproject:3139
Change-Id: I5c4f605221c255ab19abd10b321b5867ab459105
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1449984
Commit-Queue: Jamie Madill <jmadill@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-03-05 18:33:39 +00:00
Courtney Goeltzenleuchter f094bac949 Allow enabling trace annotations
Tracing was never allowed to happen because getStatus always returned
false. Also want to allow tracing for release builds for perf analysis.

Bug: angleproject:3176
Change-Id: I7aa94ed9fe3d7f67fe6dd10123c9badc7fb49d82
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1475248
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@google.com>
2019-03-05 16:04:06 +00:00
Tobin Ehlis 5546fb4fdd Vulkan:Adding custom pool allocator
Migrated pool allocator used by compiler to common.

Planning to use this for ANGLE custom command buffers so this some
refactoring in preparation for that work.

Added a unit test to check PoolAllocator functionality.

Bug: angleproject:2951
Reviewed-on: https://chromium-review.googlesource.com/c/1476953
Reviewed-by: Jamie Madill <jmadill@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Change-Id: I0b4f3d55ea1799e35c9799c221f7129233f30b24
Reviewed-on: https://chromium-review.googlesource.com/c/1492972
2019-02-28 23:26:27 +00:00
Shahbaz Youssefi 9dc8eafe11 Vulkan: ES3 dEQP suppressions
This re-enables Vulkan ES3 context creation and adds the necessary dEQP
suppressions.

Bug: angleproject:2950
Change-Id: Ic24a9fb4f867f3bce08f101e056f208abf84bb5e
Reviewed-on: https://chromium-review.googlesource.com/c/1483311
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-02-28 05:04:42 +00:00
Yuly Novikov 0546b53807 Revert "Vulkan:Adding custom pool allocator"
This reverts commit 9417174961.

Reason for revert: crashes on Debug bots

Original change's description:
> Vulkan:Adding custom pool allocator
> 
> Migrated pool allocator used by compiler to common.
> 
> Planning to use this for ANGLE custom command buffers so this some
> refactoring in preparation for that work.
> 
> Added a unit test to check PoolAllocator functionality.
> 
> Bug: angleproject:2951
> Change-Id: I29618cfdb065b8a5fefd40719a35d27b1f6e99ef
> Reviewed-on: https://chromium-review.googlesource.com/c/1476953
> Reviewed-by: Jamie Madill <jmadill@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>

TBR=ynovikov@chromium.org,jmadill@google.com,tobine@google.com,syoussefi@chromium.org

Change-Id: Id8c522bd1d94154e871211d975e801a55cc9c257
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2951, angleproject:3169
Reviewed-on: https://chromium-review.googlesource.com/c/1487977
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2019-02-25 22:47:23 +00:00
Tobin Ehlis 9417174961 Vulkan:Adding custom pool allocator
Migrated pool allocator used by compiler to common.

Planning to use this for ANGLE custom command buffers so this some
refactoring in preparation for that work.

Added a unit test to check PoolAllocator functionality.

Bug: angleproject:2951
Change-Id: I29618cfdb065b8a5fefd40719a35d27b1f6e99ef
Reviewed-on: https://chromium-review.googlesource.com/c/1476953
Reviewed-by: Jamie Madill <jmadill@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
2019-02-25 17:41:27 +00:00
Jamie Madill d09546e1ec D3D: Fall back to old compiler DLL.
This is a workaround for Windows 7 users sometimes not having the UCRT
required for the new versions of the MS HLSL compiler. It requires a
specific version of the Windows SDK with the old compiler DLL.

Bug: chromium:920704
Change-Id: Id9adb3b9d569272cbd69a8b4fc99dc160d837dbc
Reviewed-on: https://chromium-review.googlesource.com/c/1403254
Reviewed-by: Jamie Madill <jmadill@google.com>
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Commit-Queue: Jamie Madill <jmadill@google.com>
2019-02-22 17:30:43 +00:00
Tim Van Patten ee4fa07850 Reland "Create Container ANGLE APK"
This reverts commit 902ceed399.

Reason for revert:

Re-landing this since the Chromium build fix has landed:
https://bugs.chromium.org/p/chromium/issues/detail?id=933783#c29
  Comment 29 by gbeaty@chromium.org, Today (13 minutes ago)
  Tim, you should be able to re-land your change now.

Original change's description:
> Revert "Create Container ANGLE APK"
> 
> This reverts commit e82c857d38.
> 
> Reason for revert:
> This is breaking the ANGLE build in the Chromium build process:
> 
> https://bugs.chromium.org/p/chromium/issues/detail?id=933783#c6
> 
> Original change's description:
> > Create Container ANGLE APK
> > 
> > The ANGLE APK needs to be reverted back to just being a container
> > for the ANGLE shared object libraries, since the rest of the APK
> > contents are in the Android source tree.
> > 
> > Bug: angleproject:3154
> > Test: 'adb sync' the APK on to a device
> > Change-Id: Id245f1e3d269c71054d9759e8ba8be0532afe659
> > Reviewed-on: https://chromium-review.googlesource.com/c/1474341
> > Commit-Queue: Tim Van Patten <timvp@google.com>
> > Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
> 
> TBR=ynovikov@chromium.org,jmadill@google.com,cnorthrop@google.com,courtneygo@google.com,timvp@google.com
> 
> Change-Id: I71a739faa2052a707a06bce616ab43a621d5a4ff
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: angleproject:3154
> Reviewed-on: https://chromium-review.googlesource.com/c/1478333
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tim Van Patten <timvp@google.com>

TBR=ynovikov@chromium.org,jmadill@google.com,cnorthrop@google.com,courtneygo@google.com,timvp@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: angleproject:3154
Change-Id: If3a9abfb1c00aab3278437a233bef29d5febe5a5
Reviewed-on: https://chromium-review.googlesource.com/c/1480865
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
2019-02-21 20:53:40 +00:00
Tim Van Patten 902ceed399 Revert "Create Container ANGLE APK"
This reverts commit e82c857d38.

Reason for revert:
This is breaking the ANGLE build in the Chromium build process:

https://bugs.chromium.org/p/chromium/issues/detail?id=933783#c6

Original change's description:
> Create Container ANGLE APK
> 
> The ANGLE APK needs to be reverted back to just being a container
> for the ANGLE shared object libraries, since the rest of the APK
> contents are in the Android source tree.
> 
> Bug: angleproject:3154
> Test: 'adb sync' the APK on to a device
> Change-Id: Id245f1e3d269c71054d9759e8ba8be0532afe659
> Reviewed-on: https://chromium-review.googlesource.com/c/1474341
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>

TBR=ynovikov@chromium.org,jmadill@google.com,cnorthrop@google.com,courtneygo@google.com,timvp@google.com

Change-Id: I71a739faa2052a707a06bce616ab43a621d5a4ff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:3154
Reviewed-on: https://chromium-review.googlesource.com/c/1478333
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
2019-02-20 16:49:32 +00:00
Tim Van Patten e82c857d38 Create Container ANGLE APK
The ANGLE APK needs to be reverted back to just being a container
for the ANGLE shared object libraries, since the rest of the APK
contents are in the Android source tree.

Bug: angleproject:3154
Test: 'adb sync' the APK on to a device
Change-Id: Id245f1e3d269c71054d9759e8ba8be0532afe659
Reviewed-on: https://chromium-review.googlesource.com/c/1474341
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
2019-02-19 18:58:05 +00:00
Michael Spang 229fc83d68 Vulkan: Port renderer to Fuchsia (reland)
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.

Reland disabling -Wextra-semi.

BUG=angleproject:2475
TEST=angle_end2end_tests on Fuchsia

Change-Id: Ie91715bcd760c6c04d4b8a02a91daa71e32ee30c
Reviewed-on: https://chromium-review.googlesource.com/c/1467603
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-02-13 00:37:39 +00:00
Yuly Novikov 8edc68e3ff 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>
2019-02-12 20:14:33 +00:00
Jamie Madill 3f0ff409c7 Revert "Vulkan: Port renderer to Fuchsia"
This reverts commit 991d1cfb5e.

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>
2019-02-12 03:09:10 +00:00
Michael Spang 991d1cfb5e 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>
2019-02-11 22:51:25 +00:00
Jamie Madill 238c19e1a2 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>
2019-02-08 23:14:41 +00:00
Jamie Madill cd4f1fbaab 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>
2019-02-08 00:13:12 +00:00
Michael Spang 3521863294 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>
2019-02-06 21:09:38 +00:00
Shahbaz Youssefi 52d861bd49 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>
2019-02-02 06:50:48 +00:00
Jamie Madill c09ae15c08 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>
2019-02-01 21:53:28 +00:00
Cezary Kulakowski 4fb738fbc0 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>
2019-02-01 14:58:05 +00:00
Jamie Madill 0cb3b0f1e0 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>
2019-01-29 02:06:07 +00:00
Tobin Ehlis 47ca1b2fa3 Revert "Vulkan: Adding custom pool allocator"
This reverts commit 05459e06fd.

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>
2019-01-23 16:11:56 +00:00
Tobin Ehlis 05459e06fd 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>
2019-01-22 19:29:59 +00:00
Jamie Madill ab2bfa814c 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>
2019-01-16 01:44:15 +00:00
Jamie Madill 7098cff5c5 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>
2019-01-16 00:35:58 +00:00
Courtney Goeltzenleuchter c05c141619 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>
2019-01-10 05:31:56 +00:00
Jamie Madill 624ce6a353 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>
2019-01-05 01:06:14 +00:00
Nico Weber 9db8df4c3e 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>
2019-01-04 21:09:33 +00:00
Jamie Madill 1f56ed2a9b 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>
2019-01-03 21:35:24 +00:00
Jamie Madill ba319ba31c 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>
2019-01-01 18:56:45 +00:00
Yuly Novikov 9f088621eb Revert "Load entry points dynamically in tests and samples."
This reverts commit 03923558a7.

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>
2018-12-29 20:46:23 +00:00
Jamie Madill 03923558a7 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>
2018-12-29 16:24:36 +00:00
Courtney Goeltzenleuchter 92b16ea262 Re-land: Compress symbols for libraries
Reintroduce commit ffda3e2985.

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 ffda3e2985.

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>
2018-12-20 20:29:53 +00:00
CJ DiMeglio 96c11cc794 Revert "Compress symbols for libraries"
This reverts commit ffda3e2985.

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>
2018-12-19 23:04:28 +00:00
Courtney Goeltzenleuchter ffda3e2985 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>
2018-12-19 18:07:08 +00:00
Jamie Madill 4638dc9def 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>
2018-12-18 18:54:44 +00:00
Jamie Madill 720ca44976 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>
2018-12-18 15:25:40 +00:00
Yuly Novikov 175d918a1f Revert "Load correct libGLESv2 on Linux and Mac."
This reverts commit dd815b623e.

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>
2018-12-16 19:53:36 +00:00
Jamie Madill dd815b623e 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>
2018-12-16 14:04:28 +00:00
Tim Van Patten fdccaa3acb 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>
2018-12-05 21:38:05 +00:00
Cody Northrop 8e6364434a 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>
2018-12-04 19:41:22 +00:00
Jamie Madill c10a023a66 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>
2018-12-03 17:22:26 +00:00
Tom Tan 5c317537a9 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>
2018-12-03 14:35:47 +00:00
Ian Elliott a9d579e810 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>
2018-11-30 18:20:32 +00:00
Cody Northrop 2c0e06d94b 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>
2018-11-29 19:24:04 +00:00
Yuly Novikov b29fccfe2a 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>
2018-11-28 17:59:43 +00:00
Tim Van Patten c4e0a1e511 Revert "Enhance ANGLE for Android Developer Options"
This reverts commit fdbdb2b247.

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>
2018-11-28 16:08:19 +00:00
Tim Van Patten fdbdb2b247 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>
2018-11-27 22:59:12 +00:00
Tobin Ehlis 573f76b3ee 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>
2018-11-26 15:45:45 +00:00
Brandon Jones b77884b78b 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>
2018-11-15 19:10:21 +00:00
Shahbaz Youssefi 749589f8b3 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>
2018-10-29 20:30:09 +00:00
Shahbaz Youssefi 25224e786f 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>
2018-10-29 15:28:41 +00:00
Jamie Madill 20dc1c9bae 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>
2018-10-26 18:39:51 +00:00
Ian Elliott e4c64c3dc8 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>
2018-10-18 22:44:33 +00:00
Courtney Goeltzenleuchter 7d81ae7177 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>
2018-10-09 19:52:11 +00:00
Courtney Goeltzenleuchter e7ece9e22c 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>
2018-10-09 15:06:27 +00:00
Shahbaz Youssefi 996628a4a1 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>
2018-10-01 15:52:41 +00:00
Eric Stevenson c84510f4a3 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>
2018-09-26 15:01:32 +00:00
Courtney Goeltzenleuchter 801719235b 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>
2018-09-06 23:17:27 +00:00
Ian Elliott 4d42ef3965 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>
2018-09-06 18:15:07 +00:00
Ian Elliott abcb2b3b36 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>
2018-08-31 17:17:14 +00:00
Geoff Lang b02fc662fa 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>
2018-08-31 16:11:58 +00:00
Frank Henigman 44b2c0b1d3 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>
2018-08-30 18:45:22 +00:00
Frank Henigman ddc41208c1 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>
2018-08-29 21:00:11 +00:00
Frank Henigman a7f97a27eb 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>
2018-08-29 19:26:38 +00:00
Takuto Ikuta c93eeaab15 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>
2018-08-07 22:59:34 +00:00
Courtney Goeltzenleuchter 8c1508bc0b 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>
2018-07-31 16:41:06 +00:00
Ian Elliott d07c52e280 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>
2018-06-26 16:14:14 +00:00
Yuly Novikov cd70aa422c 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>
2018-06-20 22:22:41 +00:00
Tobin Ehlis b971f499b5 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>
2018-06-13 18:17:16 +00:00
Tom Anderson a4a3c19a43 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] d7ed1f0a9c

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>
2018-06-08 17:28:35 +00:00
Courtney Goeltzenleuchter b001528ffa 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>
2018-05-23 20:27:18 +00:00
Courtney Goeltzenleuchter 4607148c6b 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>
2018-05-17 20:58:22 +00:00
Courtney Goeltzenleuchter 96d292d0fb 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>
2018-05-17 20:48:22 +00:00
Jamie Madill 74a763205a 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>
2018-05-14 15:49:28 +00:00
Olli Etuaho 8073a9511a 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>
2018-05-11 06:47:28 +00:00
Jamie Madill d47044ad53 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>
2018-05-01 20:39:47 +00:00
Courtney Goeltzenleuchter ddd772455c 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>
2018-04-30 18:37:00 +00:00
Courtney Goeltzenleuchter e5db628b75 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>
2018-04-26 18:40:36 +00:00
Courtney Goeltzenleuchter 2565d48b47 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>
2018-04-25 01:04:02 +00:00
Courtney Goeltzenleuchter ec10096dba 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>
2018-04-18 17:09:12 +00:00
Jamie Madill eb79e337c9 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>
2018-04-18 12:40:41 +00:00
Jamie Madill 08b9e046c1 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>
2018-04-17 00:57:31 +00:00
Courtney Goeltzenleuchter 152152618e 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>
2018-04-13 21:16:52 +00:00
Yuly Novikov ad4f9642a6 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>
2018-03-23 22:09:24 +00:00
Yuly Novikov 40a945f293 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>
2018-03-20 23:18:43 +00:00