src


Log

Author Commit Date CI Message
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>
Mohan Maiya 78a85f2c 2020-03-16T10:28:59 Vulkan: Request device local memory for glBuffer with GL_STATIC* usage glBuffer objects with GL_STATIC_* usage patterns will now request the storage to be allocated in device local memory. For glBuffer objects with GL_DYNAMIC_* usage patterns we request a host cached memory. Bug: angleproject:4480 Change-Id: I7ca968f5ddfb59e4df3ecd07ae65df2bbf734190 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102958 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Amy Liu f98084ed 2020-03-12T10:06:26 Fix ShaderStorageBufferReadWriteOffset end2end test Test: ShaderStorageBufferTest31.ShaderStorageBufferReadWriteOffset. Align kBufferOffset to bufferAlignOffset correctly. Bug: angleproject:4471 Change-Id: I71084839a845138b32d58d8bd2cf6fed2633a9be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2100047 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill d24752e6 2020-03-15T21:34:10 Capture/Replay: Write to single binary data file. Previously the tool would save to a separate file for every frame and one additional file for the setup function. Frames without binary data would not get an "angledata" binary file. Using a single file has a few advantages: - makes it simpler to track the data dependencies in GN - should be easier to compress and decompress for speed up transfers - no need to wonder if we have frames with missing data files - less overhead reading from the HDD since the whole trace is buffered We might need to worry about extemely huge memory use cases. For now buffering the whole file into memory on startup is simple and fast. Also makes the binary data loader function more robust. Bug: angleproject:4484 Change-Id: Ia74fb0bc65200adf7a21c3143f98aa4da86457b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104554 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 7c334c56 2020-03-15T17:37:15 Re-enable optimization for angle_perftests. This CL restricts the workaround to the trace perf tests. These trace tests are too big to optimize. Also includes a fix for a 32-bit Windows warnings. We'll need to update the build file to remove a suppression once the traces are updated. Bug: angleproject:3630 Change-Id: Id13a0050fc2a645aa572b8c9079908023b232f28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103084 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 42c453fe 2020-03-15T18:23:15 Move perf test common files to a source set. Similarly to a prior patch this organizes the common perf test sources into a single target. This will allow us to more easily support setting compiler flags on particular perf test sources. This also fixes some build errors that popped up when new warnings were enabled. Bug: angleproject:3630 Change-Id: I866885199f93a5055e8d160e39f72d1f8209bc75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103086 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 5df2c9ea 2020-03-15T17:28:43 Refactor ANGLE common test utils. This reduces code duplication by including a common set of sources in a single place. New test sets will be a bit easier to add. It also encapsulates the dependencies a bit better when we pull the test utils out of the test targets. Unblocks a follow-up CL that moves the trace perf test sources into their own file so we can re-enable optimizations in the main perf test target. New warnings popped up in a few of the files because of the new source set enabling more warnings. This CL also fixes all of those. Bug: angleproject:3630 Change-Id: Ic30cb30fb4288c4dbbbd29f9bdf04be51e8a6b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103083 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Xiaoxuan Liu f1eb10ef 2020-03-10T16:40:53 GLES: Skip tests if vertex SSBO were not supported Skip tests if GPU doesn't support vertex shader storage buffer object. Bug: angleproject:4466 Change-Id: Icc7b6e686d7b4d5ecd2e05f6f09551f839f5302d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096740 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill a8631f68 2020-03-15T20:38:20 Fix running trace tests in non-standard directories. The change to make the trace tests load the data files using a relative path only worked when running the tests from the "standard" out path. By setting the CWD to the executable dir in test setup we are able to run the tests from any local dir when testing. Also cleans up some repeated code in the test init switch statement. Bug: angleproject:3630 Change-Id: I8e9e5e6e1e9cd31c5b3c7b2f52420d0ba75cf76b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104548 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov cb9a86a9 2020-03-15T14:24:32 Skip SwANGLE GLES31 tests which crash with 32-bit Subzero. Started with https://swiftshader-review.googlesource.com/c/SwiftShader/+/42108 Bug: angleproject:4482 Change-Id: I48effe26aa7ce1b574f9df8ad9c3f560cb599cf3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104406 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill a4a42e6d 2020-03-15T18:25:21 Format perf_test.cc. This was missed when our git cl format protection was temporarily broken. A subsequent change caused the file to get fully formatted so this CL pulls that diff into a split change. Bug: angleproject:3630 Change-Id: I14ed53708783b38039e8fa64cb38837e25911893 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103085 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 869e901a 2020-03-14T20:27:09 Temporarily disable optimizations in angle_perftests. The optimization for the large trace perf tests was so costly that in some configs it would fail to build at all. This could cause build failures in the ANGLE CQ. Disable optimization to work around this until we can isolate the compiler flags to just the trace perf tests. Note: this only applies to the test harness. ANGLE itself is still optimized in release builds by default. Trace trimming would also help alleviate this problem. We could also consider removing a few traces temporarily. Bug: angleproject:3630 Change-Id: I2bd8fb76f330692aa715249ca8656965b5a29d8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103674 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill db3f042b 2020-03-14T17:55:39 Trace Tests: Rebase path to relative dir. We were encoding an absolute path into our binaries. This works locally and breaks horribly when run on the bots. Fix this by rebasing the path to the root_out_dir. Bug: angleproject:3630 Change-Id: I4044d1228ee951f2192e83167deb92a0ffe92a52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103672 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya a3cf06ac 2020-03-12T13:15:48 EGL: populate EGL_NATIVE_VISUAL_ID values for Android When generating the default EGL configs, populate EGL_NATIVE_VISUAL_ID with AHARDWAREBUFFER formats. Bug: angleproject:4469 Change-Id: Ifde9df0497cbd4e01219ab6067acd8d97f8460e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2101577 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Yuly Novikov 57fa7c6c 2020-03-13T22:33:16 Revert "Skip crashing dEQP-GLES3.functional.samplers.*_tex_3d.* on SwANGLE" This reverts commit 9e9493f29dbf3afcd962c56f66cb752efe3c7ee8. Reason for revert: fix in https://swiftshader-review.googlesource.com/c/SwiftShader/+/42208 Original change's description: > Skip crashing dEQP-GLES3.functional.samplers.*_tex_3d.* on SwANGLE > > Started after > https://chromium-review.googlesource.com/c/angle/angle/+/2076740 > > Bug: angleproject:3983 > Change-Id: I4073baa36aebd4bbd210bb0a0f46959b9ef66450 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086695 > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> TBR=ynovikov@chromium.org,cnorthrop@google.com,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:3983, b:150155499 Change-Id: If5cacbeba43ce331382c0aaf814684ee1fcdaab0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103435 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev e6519445 2020-03-12T19:02:03 Implement ScanForward64 on 32-bit platforms This unlocks opt-in usage of BitSet64 on 32-bit platforms. It is slightly faster than IterableBitSet when the amount of bits is greater than 32. Bug: angleproject:4473 Change-Id: I230784acc871e13b1f94c87503f6bb869dcd3a68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2100969 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 03de11ac 2020-03-13T13:25:24 Add ANGLE_FOR_ANDROID_TOAST_MESSAGE to AndroidManifest.xml The AndroidManifest.xml is missing the intent android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE which causes a crash when enabling the Toast message when an app uses ANGLE. Bug: b:142320172 Change-Id: Iac69136fbf9ff753a3bad9e393ad62b0bf0918b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103173 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1393bf9e 2020-02-28T22:03:27 Vulkan: Timestamp internal RenderPasses in perf tests. This change book-ends RenderPasses in the Vulkan back-end with timestamp queries. This allows us to write out a trace of GPU/CPU that we can inspect in Chrome. To enable the GPU trace you can define ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS in ContextVk.cpp and run the angle_perftests suite with --enable-trace. Note that we ran into some issues with the implementation not returning monotonic timestamps. This may be a driver bug but bears more investigation. Bug: angleproject:4433 Change-Id: I0e6a364367f15183068e55686549cb418aa94c2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081380 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter b1b6a171 2020-03-10T14:20:36 Vulkan: Disable robustness support Swiftshader does not currently have the ability to behave in a way for ANGLE to support KHR_robustness. Disable for now until that functionality is available. Bug: angleproject:3058 Bug: swiftshader:145 Change-Id: I1c1b8147f6b9cf6f8d0da633dfe0f61ebfab5175 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2097053 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Cody Northrop 6963f58c 2020-03-05T15:45:35 Capture/Replay: Update TRex captures Test: angle_perftests.exe --gtest_filter="*Trace*" Bug: angleproject:4091 Change-Id: I1ec0a58f156eee0c36fdb38ec44eb486f974b731 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090664 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Julien Isorce 07044c65 2020-03-03T00:13:03 Reland "Instantiate rx::DisplayEGL when device type EGL is selected" This is a reland of 7455b54401dd55833944b5ad857ccd9852ef6a79 Original change's description: > Instantiate rx::DisplayEGL when device type EGL is selected > > Define EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE that should be > used to request a driver egl-backed implementation with ANGLE. > > Bug: angleproject:4328 > Change-Id: I6871d3a27e2bfc02af9815dcf86ae1cb6524f0cc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2030038 > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:4328 Change-Id: I4e997c4fa1b5b59f081436f05bd208303ffe38e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2093412 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
Ian Elliott 33bdab77 2020-03-12T11:42:13 Vulkan: Handle VK image being both a GL texture and GL image Address a shader that uses the same texture as both a GL texture (e.g. using a sampler) AND as a GL image (e.g. using imageLoad or imageStore). The barrier and descriptor set created by ContextVk::handleDirtyTexturesImpl() are wrong (read-only). This is fixed by having ContextVk::handleDirtyTexturesImpl() look up if the image is also being used as an image texture, and if so, use the layout that should be used in that case. Bug: angleproject:4413 Change-Id: I75684e1cfc7ed74296802ab6e31468d81625d4a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099311 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 391f38c9 2020-03-05T12:18:34 Capture/Replay: Add Manhattan to TracePerfTest This CL also adds the ability for a perf test to elect to ignore GL errors during replay. Otherwise, errors will cause the test to fail. We have known failures with Manhattan that don't affect replay. Test: angle_perftests.exe --gtest_filter="*Trace*" Bug: angleproject:4091 Change-Id: I36268a9f80754f338e52208273e889d2404b7eed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090663 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Liberato dcf20853 2020-02-27T13:11:44 Add fp16 support to KHR streams for DX11. This CL exposes DXGI_FORMAT_R16G16B16A16_FLOAT as GL_RGBA16F. Bug: angleproject:4440 Change-Id: Icbc7b2d10a4c02946fb01711c01cc8c9b01e8f54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079197 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amy Liu 5bb36cc0 2020-02-21T18:25:54 Passing covgl/covgl Fix the following gles1-API implementation codes and some validation functions: glClearColorx glClearDepthx glDepthRangex glGetFixedv glGetTexParameterxv glLineWidthx glPolygonOffsetx glSampleCoveragex glTexParameterx glTexParameterxv ValidateMaterialCommon ValidateFogx ValidateFogxv ValidatePointSizex ValidateRotatex ValidateTexEnvx ValidateTexEnvxv Bug: angleproject:4281 Change-Id: Ia1d9e53c3ffde2bc77b7ca7eaa0d790e8ca43f10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2075341 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 175227ba 2020-03-06T14:30:06 Vulkan:FramebufferVk cache draw buffer handling Dirty draw buffers are causing cache clears on Manhattan. Instead of clearing out the entire FramebufferVk cache when draw buffers are dirty, reset the cache signature and regenerate it. This change also contains a fix to make sure that we're not generating serials for a draw buffer that's disabled. Thanks Jamie Madill! Bug: angleproject:4442 Change-Id: I0d48a2d6d95e74898a11bdde0fedbce77c82a3a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2091862 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Cody Northrop a2f9ad39 2020-03-09T14:28:39 Vulkan: Remove unused atomic counter builtins Atomic counters are not supported by Vulkan. Most are already converted by the RewriteAtomicCounters traversal, but that is only invoked when atomic counters are active. This CL introduces another pass that removes any atomic counter builtin that was not handled by the previous pass. It also will assert if it sees any atomic counters active, thus ensuring it is only used when needed. Test: KHR-GLES31.core.compute_shader.shared-struct Test: angle_end2end_tests.exe --gtest_filter="*AtomicCounter*" Bug: angleproject:4189 Bug: b:150310216 Change-Id: I61d10e954886dc94fede8b344f5a0ede3b689adb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095688 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang cf80f252 2020-03-12T11:33:10 Remove android:forceQueryable from the ANGLE.apk manifest This property is not part of AOSP yet. BUG=b:142320172 Change-Id: I73b0481872096053c6b4b709d15376d82a1a7b02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099421 Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
shrekshao 84780f7d 2020-03-11T10:58:09 Speculative fix: getProgramiv always returns a valid program The only possibility with program being nullptr here in the case of GL_LINK_STATUS seems to be if the context gets lost between the validation and usage of `Context::getProgramiv`. Bug: chromium:991020 Change-Id: I50a77ca4a841dea7324344a71e46d4e0bf72858d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096176 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shrek Shao <shrekshao@google.com> Commit-Queue: Shrek Shao <shrekshao@google.com>
Yuly Novikov 2e5bd9b1 2020-03-11T17:46:06 Update SimpleStateChangeTest.DrawRepeatUnalignedVboChange suppression Also flaky on Linux (already suppressed on Windows). Bug: angleproject:4470 Change-Id: I032241a4201dc7883d6107c643cf88c92fb01ba3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099402 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten 27f310da 2020-03-11T16:07:18 Fix SearchProvider The SearchProvider was attempting to launch ANGLE's MainActivity class with the wrong fully qualified class name when Google's version (com.google.android.angle) was installed on the device: com.google.android.angle/.MainActivity Instead, the AndroidManifest.xml and SearchProvider need to use the fully qualified class name for com.android.angle.MainActivity since the package name will differ between the AOSP (com.android.angle) and Google (com.google.android.angle) versions. Bug: b:142320172 Change-Id: Iab6883736be2a21dff64993bcaedbcc4c0cfecf8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099443 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Geoff Lang 14aaa1eb 2020-03-11T17:40:35 Refactor ANGLE target to allow GoogleANGLE to override it. GoogleANGLE will be signed in a different part of Android so it needs to be able to reference ANGLE's target and defaults to override certain properties. Update the manifests to request the needed permissions to use the developer options. Bug: b:142320172 Change-Id: Ia47815ab53f8de66332412efa2cc0fca3175e2cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096815 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis d6448538 2020-03-09T12:49:32 Relax GL_DEPTH_COMPONENT32_OES format support rules On iOS, GL_OES_depth_texture is supported, which includes the format GL_DEPTH_COMPONENT32_OES. However, GL_OES_depth32 is not always exposed. This is causing ANGLE to not expose GL_OES_depth_texture, and GL_ANGLE_depth_texture. Bug: angleproject:4451 Change-Id: If9cd782e851e040b1cf24a763dd93e063ebffbc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095361 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
jchen10 1b12f6e5 2020-03-10T14:26:49 Remove MultisampleCompatibilityTest suppression The failed DrawCoverageAndResolve can pass on 26.20.100.7323 now. Bug: angleproject:3855 Change-Id: Ia6eb9fef2a57f0bdf52cb2e45c138457f5de88aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096230 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Charlie Lao c5b3cbdb 2020-03-09T16:58:37 Vulkan: Use VK_FORMAT_D24_UNORM_S8_UINT for 24 bit depth if available And if the format we picked has extra bits, try to clear it instead of load the value. Don't store these extra bits as values as well. Bug: angleproject:4459 Change-Id: If5d0e31aca1453deab970d0dbcf8886a5e6ed51c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095850 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com>
Rafael Cintron 9e263aa8 2020-03-06T17:41:30 Enable allowClearForRobustResourceInit for NVidia hardware Intel and AMD drivers have trouble clearing textures without causing corruption. NVidia, on the other hand, can handle. Bug: angleproject:1074 Change-Id: Id9d293eba92f80e2af3a0d2e40cbeccb127763b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2092838 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
shrekshao abcc536b 2020-03-09T13:20:53 Speculative fix for nullptr program in QueryProgramiv It is reported that an increase crash rate is seen on M81. This is a speculative fix based on that most crashes have calls from GrGLProgramBuilder::checkLinkStatus. Bug: chromium:991020 Change-Id: I549de9e0a0cccde8b9c68d706828963fe3f9bdf2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095596 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shrek Shao <shrekshao@google.com> Commit-Queue: Shrek Shao <shrekshao@google.com>
Jamie Madill 5d7ccc30 2020-03-09T14:24:30 Revert "Vulkan: Fix store ops with linear command recording." This reverts commit a61e273ac3ca88cb95b7bebac0d31a62644049a0. Reason for revert: Causes rendering artifacts in "Aztec Ruins". Bug: angleproject:4444 Original change's description: > Vulkan: Fix store ops with linear command recording. > > DiscardFramebuffer was being ignored in the new linear path. Fix this > by using the correct APIs. Also cleans up some of the access to the > "RenderPassCommandBuffer" struct in ContextVk. Add a new accessor that > returns the RenderPass without a flush that ensures it is only called > when a RenderPass is already started. > > Bug: angleproject:4029 > Change-Id: Ibd199f3a371c0f91b448a0b34c8752dc8b76c284 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057329 > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=tobine@google.com,jmadill@chromium.org,cclao@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:4029 Change-Id: I7d925b88c438a20ebe4a48634568addda7a64d60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2093157 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade a8c947c7 2020-02-06T08:53:16 Enabled GL_KHR_no_error Enabled GL_KHR_no_error added end2end tests for it Note that GL_KHR_no_error can only be enabled by setting the EGL attribute currently. Context flags are not currently supported. Bug: angleproject:1280 Test: angle_end2end_tests --gtest_filter=ContextNoErrorTest.* Change-Id: Ib5c73b8e284e3e4e5f800750ad6fcbef77be4285 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068899 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 0c9b6abd 2020-02-06T08:53:16 Skip invalid end2end test for ES2 Previously, the incomplete framebuffer depth stencil attachment test would run on ES2 if GL_OES_packed_depth_stencil were present. This is insufficient since it uses the GL_DEPTH_STENCIL_ATTACHMENT enum, which is not introduced in any extension prior to ES3. The test has been disabled on ES2, regardless of extensions. Bug: angleproject:4454 Test: angle_end2end_tests --gtest_filter=StateChangeTest.FramebufferIncompleteDepthStencilAttachment/* Change-Id: Ic5a6a521e35b49c5d723b33f588fa608264d6390 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2090783 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 03ed5f6c 2020-03-06T22:15:42 Revert "Instantiate rx::DisplayEGL when device type EGL is selected" This reverts commit 7455b54401dd55833944b5ad857ccd9852ef6a79. Reason for revert: This appears to break the "Linux FYI Ozone (Intel)" bots on the chromium.gpu.fyi waterfall. Ozone means ChromeOS. Original change's description: > Instantiate rx::DisplayEGL when device type EGL is selected > > Define EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE that should be > used to request a driver egl-backed implementation with ANGLE. > > Bug: angleproject:4328 > Change-Id: I6871d3a27e2bfc02af9815dcf86ae1cb6524f0cc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2030038 > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,syoussefi@chromium.org,jonahr@google.com,julien.isorce@chromium.org Change-Id: I8aec6c2783b0acb67d3315d351cdc9e526f58d6b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:4328 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2091864 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Tobin Ehlis 1a5c7a16 2020-02-25T12:02:31 Reland "Vulkan:Include precision qualifier in GLSL" Currently still ignoring precision qualifiers for Vulkan shaders by default, but have added feature "enablePrecisionQualifiers" that can be enabled in order to include precision qualifiers. With this initial implementation, it's possible to get precision qualifier mis-matches in the generated GLSL 4.50. According to the spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and Precision Qualifiers": For the purposes of determining if an output from one shader stage matches an input of the next stage, the precision qualifier need not match. However, when converted to SPIR-V and run through the shader validation any mismatches will cause shader validation errors. Initially just ignoring those errors with this commit. Bug: angleproject:3078 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com> Change-Id: Ieecca604bb2c834c9b1c2bcab85279d1f8755dfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086280
Julien Isorce 7455b544 2020-03-03T00:13:03 Instantiate rx::DisplayEGL when device type EGL is selected Define EGL_PLATFORM_ANGLE_DEVICE_TYPE_EGL_ANGLE that should be used to request a driver egl-backed implementation with ANGLE. Bug: angleproject:4328 Change-Id: I6871d3a27e2bfc02af9815dcf86ae1cb6524f0cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2030038 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott 3797fc85 2020-03-05T11:44:28 Generate new compiler errors for array-of-arrays The GLES GLSL 3.1 spec states that it is an error to use array-of-arrays in the following cases: - Vertex shader outputs - Fragment shader inputs - Fragment shader outputs ANGLE currently generates errors in the case of vertex shader inputs. It needs to add the above cases. Reproduce by running "angle_deqp_khr_gles31_tests" with: --gtest_filter=dEQP.KHR_GLES31/core_arrays_of_arrays_InteractionInterfaceArrays2* --use-angle=swiftshader Bug: angleproject:4148 Change-Id: I1147fc7d4755e5b6c07d2ab5d14566d919dec530 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2087647 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 9acaf662 2020-02-28T14:58:17 Add timer query support to TracePerfTests. This can allow us to get some profiling measurements on ANGLE vs a native driver. We correlate host times with GL times using the blocking timestamp query. We also time RenderPasses/FBO switches using the trace instrumentation we added in an earlier patch combined with timer queries. Not currently instrumented for the current tests. We'll need to re-run capture to get the callbacks working correctly. Bug: angleproject:4433 Change-Id: I8f61774a3a090ac9460a378d34715a72954d1331 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080597 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang 55228e53 2020-03-04T18:25:47 Add Chrome texture formats test for VulkanExternalImageTest This make sure the VkFormat/internalformat combinations that Chrome uses succeed import, which in particular requires the object size to match. Allowing VK_FORMAT_R8G8B8_UNORM VkFormat for GL_RGB8 will make this test fail when run on a native vulkan that supports that format. Bug: chromium:1058521 Change-Id: I91483568ba8552f40314f10215bfea59e5ca2b94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088652 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop c55fbc40 2020-03-01T16:23:05 Capture/Replay: Fill out more ES 3.0 state in mid-execution capture Test: Manhattan mid-execution capture working Bug: angleproject:3662 Bug: angleproject:4091 Change-Id: Id7f1a3f667229e4d5abedb3ada25d44db250605a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080592 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter ca04de85 2020-03-03T09:59:42 Vulkan: blacklist VK_FORMAT_R8G8B8_UNORM Chrome makes assumptions that depend on ANGLE implementing 24bit RGB as 32 RGBX. Since that was the behavior of ANGLE for a while, remove those formats from the VK format table to force that behavior again. Test: Chrome on Fuchsia Bug: angleproject:4282 Change-Id: I22a3f07b00d7870044ed6b3326dd528721b89af8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2085043 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
Cody Northrop e682bc57 2020-03-01T16:19:32 Capture/Replay: Add Sampler Object support to mid-execution capture Test: Manhattan mid-execution capture working Bug: angleproject:3662 Bug: angleproject:4091 Change-Id: Iafa528e2a25efe1c49eb49ecc429eac8f25c162c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080591 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Ian Elliott 6125419c 2020-03-04T10:31:26 Vulkan: Suppress some flaky tests for Intel Linux driver Bug: angleproject:4453 Change-Id: I55475f85298a593597daa300effa828a6b0ed342 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2087896 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Cody Northrop 9459bae1 2020-03-01T16:17:41 Capture/Replay: Add Vertex Array Object support to mid-execution capture Test: Manhattan mid-execution capture working Bug: angleproject:3662 Bug: angleproject:4091 Change-Id: I5d16e8faed759507c85b6358b65750fe5c33ddfe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079190 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop f8ecac29 2020-03-01T16:16:18 Capture/Replay: Add TransformFeedback Object support to mid-execution capture Test: Manhattan mid-execution capture working Bug: angleproject:3662 Bug: angleproject:4091 Change-Id: Ibaa708085c5707a4ece637186daeafe6c681068f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070901 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 605ab763 2020-02-24T19:43:32 D3D11: Implement OES_draw_buffers_indexed Existing CONSTANT_COLOR/CONSTANT_ALPHA limitation was generalized to independent blend states with draw call invalidation and a new end2end test. dEQP tests that are incompatible with this limitation result in INVALID_OPERATION and are marked as FAIL. D3D11 renderer always normalizes and deduplicates requested blend states based on their enabled features and bound framebuffer. Bug: angleproject:4394 Change-Id: I284796e18be71de1b5bfb087d36f6a45be4c3f70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070575 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott f143ab1f 2020-03-03T17:15:38 Vulkan: Disable forceOldRewriteStructSamplers for SwS-Android Disable the forceOldRewriteStructSamplers feature for SwiftShader on Android. Another change fixed the issue that prevented SwiftShader on Android from supporting sampler arrays as parameters. The Qualcomm driver still cannot support sampler arrays as parameters, and so it still needs forceOldRewriteStructSamplers. Bug: angleproject:4071 Bug: angleproject:2703 Change-Id: I77fbfacdad6cd9cc918c79fa0918f15de0558ce0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086282 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e45fe217 2020-02-29T23:28:33 Fix up EGLSurfaceTest. * removes the SwapInterval test. This test was not really based on spec language. SwapInterval is highly os-dependent so likely a robust test would include some OS-specific logic instead of timing. * give the pbuffer surface non-zero dimensions. this fixes an uncaught error on Windows and may give better results. * lifts a couple Android suppression possibly related to the pbuffer bug. a couple tests still fail. Bug: angleproject:3123 Bug: angleproject:3162 Change-Id: I68e4e943b94d17777704bbe3b8ae7e646fc9c54d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082131 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Xiaoxuan Liu 27a81308 2020-02-29T12:53:45 Vulkan: Re-enable RobustResourceInitTest.Texture test Commit "Vulkan: Add robust init for NULL texture image." for angleproject:4255 also fixed angleproject:3416, re-enable the disabled test in 3416. Bug: angleproject:3416 Change-Id: I36c09d90eafe9dea0b477c49487284d4a305d992 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086931 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ancheng Qiao 028a7a72 2020-03-03T18:19:33 Skip if GL_EXT_texture_compression_dxt1 isn't supported If GL_EXT_texture_compression_dxt1 is not support, will be failed at glCompressedTexImage2D in CopyCompressedTextureTest.Immutable Bug: angleproject:1424 Change-Id: I287c6a40c1c09fa379088e5ad4bec06f0dfc2f59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086533 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 9e9493f2 2020-03-03T21:03:01 Skip crashing dEQP-GLES3.functional.samplers.*_tex_3d.* on SwANGLE Started after https://chromium-review.googlesource.com/c/angle/angle/+/2076740 Bug: angleproject:3983 Change-Id: I4073baa36aebd4bbd210bb0a0f46959b9ef66450 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086695 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Cody Northrop 54bd0005 2020-03-01T16:13:23 Capture/Replay: Add Query Object support to mid-execution capture Test: Manhattan mid-execution capture working Bug: angleproject:3662 Bug: angleproject:4091 Change-Id: I3e0d0fb1692b1fda08fd057d528f70aa5e50ef1c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070900 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop dfae826d 2020-03-01T16:07:49 Capture/Replay: Update getTexImage for depth/stencil and 3D 3D support based on work from ancheng.qiao@arm.com. Test: Manhattan mid-execution capture working Bug: angleproject:4058 Bug: angleproject:4091 Change-Id: I7f8b8542fbc1f3484a2451850db0dc752c0b8906 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070899 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Ancheng Qiao 90019cea 2020-02-26T18:04:25 Vulkan: Add depth to mipmap generation In generateMipmaps, remove hard coded depth of 1, shift depth like every other dimension. Remove MipmapsForTexture3D test pixel value check, in es spec3.2 8.14.4 "No particular filter algorithm is required, though a box filter is recommended." It's implementation-dependent. In current angle implementation, will choose VK_FILTER_LINEAR/VK_FILTER_NEAREST according to vkdeice support. Bug: angleproject:3983 Test: MipmapTestES3.MipmapsForTexture3D/ES3_Vulkan Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_max_lod Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_min_lod Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_max_lod Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_min_lod Change-Id: I5e73f8c743053aeb521b5e0b3e372bbe77e57ad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076740 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xiaoxuan Liu f8b28678 2020-02-26T19:12:39 Vulkan: Add support for VK_EXT_index_type_uint8 Enable VK_EXT_index_type_uint8 Vulkan extension if supported by VkDevice. Bug: angleproject:4405 Change-Id: I84d030497898c5944a36d9a88a31e7377ccd5e9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082391 Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b84969ad 2020-02-29T09:14:36 Vulkan: Use QueryHelper for internal GPU timing. This cleans up the code. Using QueryHelper means we don't need to duplicate the timestamp query/result code. It also means we don't need special allocate/free functions in DynamicQueryPool. Done while investigating timing GPU events for T-Rex. Bug: angleproject:4433 Change-Id: I8512a5618e1dd00956942ae2d12d46d8193c4e51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081379 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4fb29948 2020-02-12T13:48:43 Split up EGLContextCompatibilityTest. Instead of attempting to run numConfigs^2 test permutations in a single test we now split up each config into its own test. Each permutation also gets a unique name based on the configs it is testing. Because there were so many tests on some back-ends (e.g. D3D11) this CL adds a way to hard limit the number of test permutations by discarding random tests to reach a specified maximum per back-end. Uses the GoogleTest "RegisterTests" API instead of using the GTEST macros. See online GTest docs for more info. This will allow more easily supporting test timeouts when running batches of tests multi-process. As a side effect we no longer need to restrict this test to Release builds or ignore some renderers. Bug: angleproject:4449 Change-Id: Ia7991e2a3906175413b77a876432061da527d03b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050812 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill a1e5f582 2020-02-29T08:01:16 Vulkan: Clean up QueryHelper uses. Makes the wrapper classes take boxed query handles. Also cleans up some repeated code patterns. It also encapsulates the QueryHelper class more so that the pool indexes and handles are hidden from the user of the class. Fixed while working on GPU trace event timing. Bug: angleproject:4433 Change-Id: Ib6cba9c52ec956ebede9b411b70261ea5b877d7d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081378 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 80f55e97 2020-02-28T15:05:41 Expose glGetInteger64vEXT. This entry point is specifically for retrieving very large timestamp values from EXT_disjoint_time_query. In GLES 2.0 contexts with the Vulkan back-end we were getting some astronomical values that couldn't be cast to 32-bit ints. Also fix missing dependencies in generate_loader.py. Bug: angleproject:4433 Change-Id: I59146dcc1a163a24ac2d7c37546f4551a7a8890a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080595 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 51a9da21 2020-02-28T13:57:25 Add OES_draw_buffers_indexed autogenerated wrappers and validation redirects. This extension allows setting independent blend state (and color write mask) for each draw buffer. OES and EXT versions provide exactly the same functionality. It is also included in GLES 3.2 core. Bug: angleproject:4394 Change-Id: I0c27c419472622e309a038dd1463fa0b3e4ca595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078587 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tobin Ehlis ff60abaf 2020-02-28T14:06:07 Vulkan:Disable FramebufferVk cache on Apple Currently hitting a crash on Apple so disabling FramebufferVk cache. Bug: angleproject:4442 Change-Id: I3824252210aeeaf9919c8d17730395b394a50862 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080661 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
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>
Ran Wang 35785308 2020-02-24T17:37:55 Vulkan: reserve extra varyings when basicGLLineRasterization or supportsTransformFeedbackExtension is enabled. updated with MaxVaryingWithFeedbackAndGLline adding test to validate pixel value (disabled for macos) Bug: angleproject:4273 Change-Id: Ie3d3516fd3806c0d622fb402ba8223d302206f73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071237 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill fd75545f 2020-03-01T20:59:48 Test Runner: Add stub register function to GLES 1 CTS. These tests use the same main function as end2end_tests. Add the register function stub so the compilation works correctly in standalone and component builds. Bug: angleproject:4449 Change-Id: Id240a834ae0e358d0e2520b12842f3f337c0aa31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081514 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill da2e65c0 2020-03-01T13:01:24 Test Runner: Add stub register function to white box tests. These tests use the same main function as end2end_tests. Add the register function stub so the compilation works correctly in standalone and component builds. Bug: angleproject:4449 Change-Id: Ib1558a596b9a558b16a7c5b7bfccc1e495a67e39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082135 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 390be9bb 2020-03-01T08:47:37 Test Runner: Use system path for gtest-internal. This ensures we use the correct internal path in Chromium builds as well. Bug: angleproject:3162 Change-Id: I036dcbd8802f67162e5f5eccb6158910f0a5efcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082134 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 49a68f18 2020-03-01T08:12:53 Add RegisterContextCompatibilityTests stub. We'll call this function from the Chromium angle_end2end_tests main. First this CL needs to roll into Chrome. Then we can make a second CL in ANGLE to change the way the EGLContextCompatibilityTests are set up. This is to break up the slow tests into smaller pieces. See the issue for more details. Bug: angleproject:4449 Change-Id: Icc10679c61fd2f7a5e396f7a310ffcfd0b45893b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082133 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 94d399ca 2020-02-28T08:18:37 Trace/Replay: Add framebuffer change callback. The perf tests can use this callback to instrument timer queries to delineate render pass times on the device. The new call pattern in the replay looks like this: glBindFramebuffer(GL_FRAMEBUFFER, gFramebufferMap[1]); OnFramebufferChange(GL_FRAMEBUFFER_OES, gFramebufferMap[1]); Bug: angleproject:4433 Change-Id: Ice5150741d1d5becb26d60020e8c00e3a2fb6218 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2074337 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Geoff Lang 54bc3dab 2020-02-27T15:52:04 Add the ANGLE Android developer options to the ANGLE repository. The ANGLE repository will house all the scripts needed to build ANGLE.apk and the developer options are packaged in the APK. BUG=angleproject:2344 Change-Id: I29090bd91a07546a1d2ccc03a6af19f45ffa3d90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079194 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Xiaoxuan Liu b07816d6 2020-01-02T15:13:37 Vulkan: Add robust init for NULL texture image. In gl::ReadPixels(), ValidateReadPixels() will try to flush staged updates before readPixels. In the case where a texture was initialized with null RGBA data, no Framebuffer dirty bits are set, and thus the staged clear would never be flushed from the staged updates. 1. Add robust init in TextureVk::initImage to ensure image is initialized. Test: ./angle_end2end_tests --gtest_filter=\ RobustResourceInitTest*_Vulkan_AllocateNonZeroMemory 2. Update stageSubresourceRobustClear() to kEmulatedInitColorValue in the case where robust resource was initialized without full RGBA format to update init value of robust resource. Test: texture-attachment-formats.html in webgl_conformance_vulkan_passthrough_tests. 3. Revert "Suppress Vulkan RobustResourceInit tests." Revert commit a8e6a463121b9920564fb6efd7f2c857d7023fe3. Reason for revert: re-enable related robust tests. Bug: angleproject:4255 Change-Id: I79f20e0c02c2f1b1cd68ab590f0f765229f9e780 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985503 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Schade 6c56c579 2020-01-21T11:08:36 Add Android boot animation and rounding error test This introduces an end2end test that makes the same GLES1 calls as Android's default boot animation. The test uses images of much smaller sizes, but we do the same thing with the images as the original code (it uses one image as a mask and moves the other along behind it). The original default boot animation code can be found here: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/cmds/bootanimation/BootAnimation.cpp#422 This change also implements glTexParameterx since the default boot animation requires it. This function is part of OES_FIXED_POINT. This also includes a test to check for int to floating point cast errors when using GL_TEXTURE_CROP_RECT_OES. Tests: angle_end2end_tests --gtest_filter=*DefaultBootAnimation* angle_end2end_tests --gtest_filter=*TextureParameterTest.IntConversionsAndIntBounds* Bug: angleproject:3644 Change-Id: Ib7e99c9dc1c001c71543d03ea4dd76082192f6a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2053506 Commit-Queue: Brandon Schade <b.schade@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Yuly Novikov fb551728 2020-02-28T11:10:29 Suppress SwANGLE dEQP-GLES3.functional.texture.compressed.astc.* failures Started after SwiftShader enabled ASTC in https://swiftshader-review.googlesource.com/c/SwiftShader/+/41568 Bug: angleproject:4447 Change-Id: I251ff26d4972f17f1f76f8ad1df57dc9c539782c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078755 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tobin Ehlis a60e4973 2020-02-27T20:11:20 Revert "Vulkan:Include precision qualifier in GLSL" This reverts commit 93e72f5f0eb80b89334ea8fe577b32901a00b5fb. Reason for revert: This is having a negative impact on gfxbench Manhattan 3.1 tests (20-30%) with only a minor improvement (~4%) in TRex offscreen. Pulling out for now and need to re-evaluate best solution here. Original change's description: > Vulkan:Include precision qualifier in GLSL > > With this initial implementation, it's possible to get precision > qualifier mis-matches in the generated GLSL 4.50. According to the > spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and > Precision Qualifiers": > > For the purposes of determining if an output from one shader stage > matches an input of the next stage, the precision qualifier need not > match. > > However, when converted to SPIR-V and run through the shader validation > any mismatches will cause shader validation errors. Initially just > ignoring those errors with this commit. > > Bug: angleproject:3078 > Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Tobin Ehlis <tobine@google.com> > Reviewed-by: Tim Van Patten <timvp@google.com> > Commit-Queue: Tobin Ehlis <tobine@google.com> TBR=tobine@google.com,timvp@google.com,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:3078 Change-Id: I84984e2a963bde573f0f1de585001ceb83623c89 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079334 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reid Kleckner 78da538a 2020-02-26T21:23:16 Revert "Vulkan: Disable global merge for volk" This reverts commit bab2b3de2273796ca15edfc46747f3bbab3f27c3. Reason for revert: A fixed clang version has been rolled in, so this flag should no longer be necessary. Original change's description: > Vulkan: Disable global merge for volk > > This optimization pass breaks the build by exporting volk's internal > binding symbols from libGLESv2.so. Since the test binary also links volk, > this causes a SEGV as the wrong (uninitialized) function pointer is > called. > > This is an LLVM bug and will be fixed upstream: > https://reviews.llvm.org/D73235 > > Bug: angleproject:4351 > Change-Id: Iebe0eabd975f8109231df30eef8c9074af8190e9 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023910 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Michael Spang <spang@chromium.org> TBR=spang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org Bug: angleproject:4351 Change-Id: Ie832d7d42fab7c8360f2d4d548f1708164c60d3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076138 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org>
Jamie Madill 5dde4db5 2020-02-27T15:39:30 Capture/Replay: Capture DrawBuffersEXT. The extension entry point can forward to the ES 3.0 entry point. Needed for capturing the mutiple draw buffers sample. Bug: angleproject:4433 Change-Id: I1081e6a5ad57eca6dc328947bb0f9037d47fe9f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079155 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill da6d12d0 2020-02-27T14:20:32 Fix out-of-bounds read in test. The test wasn't reserving a large enough buffer when initializing the vertex data. Fix the test buffer limits. Bug: angleproject:4430 Change-Id: I4b9a98e1af1cc8088afb871816061d7ee4dd6a2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079153 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 698ffd02 2020-02-27T10:59:13 eglGetConfigAttrib validation missing extension check The extension EGL_ANGLE_iosurface_client_buffer adds a new attribute to the config: EGL_BIND_TO_TEXTURE_TARGET_ANGLE. However, validation was not checking the extension was present when this attribute was requested. Bug: chromium:1015454 Change-Id: I24c6e20f3b602e8a71a46f0f1e99c1472d5bbb1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078892 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 4d2040a6 2020-02-27T09:59:11 Make GLSLTest_ES31.MixOfAllResources more lenient. Lower precision in Vulkan caused off-by-one issues with this test. BUG=angleproject:4438 Change-Id: I17111a06133ef403be1f0c99321f1dbf8ab6083c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2078791 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao f0d32401 2020-02-14T14:50:25 Vulkan: Optimize element buffer conversion Uses CPU copy if the buffer is CPU visible. Also add dirty bit check to avoid repeated conversion on clean data Bug: angleproject:4400 Change-Id: I1f472703ebc4a65ee0de129c27f56b081748f900 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057758 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Ian Elliott cb7f5f4a 2020-02-26T16:59:01 Vulkan: Updated expectations after SwS fixed 4259 Bug: angleproject:4259 Change-Id: I518db27a1fb50d35f2c784f655d3e7ee40f4bdf2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076415 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott e488d8b8 2020-02-26T16:11:29 Vulkan: Implement Android pre-rotation As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate rendering on behalf of the application. This involves modifying the vertex shader to multiply gl_Position with a mat2 "rotation matrix". Not doing so means that SurfaceFlinger (SF) will perform a costly rotation blit before presenting every image. Setting WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do the blit. When the surface is rotated 90 or 270 degrees, the width and height must be swapped for: - The swapchain images, and for any depth, stencil, and/or multisample attachments used with the swapchain image. - The viewport, scissor, and render area. Because the Metal back-end shares the TranslatorVulkan, it will define the same preRotation (mat2) DriverUniform that is used for Vulkan. Bug: angleproject:3502 Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@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>
Jamie Madill c79b0ea5 2020-02-25T08:26:23 Vulkan: Document command access APIs. Includes a short description of the ContextVk command APIs. Also a few small cleanups to other Vulkan back-end documentation. Bug: angleproject:4029 Change-Id: I3bd04861f27b718e6a94fdae00644c124452bc62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070597 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Tobin Ehlis 93e72f5f 2020-02-25T12:02:31 Vulkan:Include precision qualifier in GLSL With this initial implementation, it's possible to get precision qualifier mis-matches in the generated GLSL 4.50. According to the spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and Precision Qualifiers": For the purposes of determining if an output from one shader stage matches an input of the next stage, the precision qualifier need not match. However, when converted to SPIR-V and run through the shader validation any mismatches will cause shader validation errors. Initially just ignoring those errors with this commit. Bug: angleproject:3078 Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Brandon Schade 8aea6d5a 2020-02-25T11:22:00 glslang: enforce initialize and release as once per process Bug: angleproject:4354 Change-Id: Ice0912a90d4e9a4fe3fdaf67d67292afc0eba8a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073201 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter b9b4569b 2020-02-25T15:01:21 Save binding information when caching shader Test: KHR-GLES31.core.layout_binding.sampler2D_layout_binding_texture_FragmentShader Bug: angleproject:4106 Bug: angleproject:3089 Change-Id: Ia92ee172ae574e50bf1759583e46ffb54f348962 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072871 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
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>
Tobin Ehlis a1ceb87b 2020-02-25T11:58:19 Vulkan:Refactor precision emulation code GLSL, ESSL, and HLSL translators all had the same code to emulate precision so migrate that code to base class. This is a structural change to prepare for honoring precision qualifiers in the Vulkan translator as well, which is done in a follow-on commit. Bug: angleproject:3078 Change-Id: Id85bba83543189e3bbc4002be92b056e63afc8de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072644 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Jamie Madill 916d204c 2020-02-25T14:18:38 Vulkan: Use new APIs in BufferHelper::copyFromBuffer. We shouldn't need to special case the barrier logic in this function any more. Instead use the 'onBufferRead' and 'onBufferWrite' APIs. Bug: angleproject:4029 Change-Id: I7f67b67aa312d9ae64172b40d73086b7772d49d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071143 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 660c0dd6 2020-02-25T13:30:33 Vulkan: Fix padding out Buffer allocations on AMD. We would often pad incorrectly given the constraints of the max stride. We shouldn't really be rounding up the buffer size, but we should instead be adding the max alignment size to the end of the buffer. Bug: angleproject:4428 Change-Id: Id2afc572c85985548a18f60b42cdc388d83d5c4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071235 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 5b7ce876 2020-02-25T09:52:05 Vulkan: Update buffer accumulation TODO bug IDs. Bug: angleproject:4029 Bug: angleproject:4429 Change-Id: Ice4ae48a92e376ea916f05d1433a68f3accc09d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071145 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinyi He b185002d 2020-02-21T16:58:39 Fix the condition of glOrtho{fx} validation According to the OpenGL ES 1.1 spec, remove the conditions of glOrtho validation that n and f must be positive. Bug: angleproject:4281 Change-Id: I644a25408a026ce87211f2203b8e8203eeaf69bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067002 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Pierre-Marc Berube f031f7c8 2020-02-19T18:13:32 Fix a GCC 10 build failure. Build failed on GCC10 with C++17. An #ifdef was added to support both C++17 and C++14 Bug: angleproject:4390 Change-Id: I397513a8ebad4a55635ba863c47edc658e405729 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2063545 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>