Log

Author Commit Date CI Message
Shahbaz Youssefi ab5acbd5 2019-01-23T13:58:09 Vulkan: implement swapchain resizing Vulkan allows a swapchain to be created based off of an older swapchain that's still presenting, to support seamless window resizing. The old swapchain will remain alive (though no image can be acquired from it) and automatically cleaned once no image is being presented from it. The retired swapchain can be destroyed once all operations on its images are completed. We store the old swapchain next to the serial of submission that's used for CPU throttling and defer the destroy call until after `finishToSerial` for that serial is called. Bug: angleproject:2942 Change-Id: Ic62a5a57b712ffa2b087f5fecde0dc8942194075 Reviewed-on: https://chromium-review.googlesource.com/c/1435634 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 088e5217 2019-02-06T17:07:57 Vulkan: Suppress flaky test on Nexus5X Bug: angleproject:3124 Change-Id: Idfcd84f92126eb7548f86f8c327887a34e3218a9 Reviewed-on: https://chromium-review.googlesource.com/c/1457025 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Lingfeng Yang 603ad164 2018-12-04T07:34:23 GLES1: dirty bit pass This CL introduces a coarse layer of dirty bits and on-demand sending of some uniforms to the underlying driver, instead of sending all uniforms every draw, which should improve performance in cases where not much is changing between draws. BUG=angleproject:2306 Change-Id: I530515dfad2e4be74c73d8659acd4fe5decaa8b0 Reviewed-on: https://chromium-review.googlesource.com/c/1361222 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Cody Northrop f9cc785c 2019-02-06T07:59:45 Docs: Add glmark2 instructions for Android Bug: angleproject:3125 Change-Id: I0d185ad70b960d0c3bff971eb6658893b308352d Reviewed-on: https://chromium-review.googlesource.com/c/1456481 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Michael Spang 35218632 2019-02-06T13:05:21 Vulkan: Move vulkan config target to $angle_root:vulkan_config This will allow us to avoid loading the build file for //third_party/vulkan-validation-layers on Fuchsia, since we don't want to build the validation layers on that platform. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia (with full series) Change-Id: Ifeb67125f5fcebf2b30ae18b760667ba7c56e4d5 Reviewed-on: https://chromium-review.googlesource.com/c/1456479 Commit-Queue: Michael Spang <spang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis 36433590 2019-02-06T10:45:44 Fix ShCompileTest.DecimalSepLocale failing on Linux/AMD Bug: angleproject:3132 Change-Id: I4bbaaab732cd64e6f2f44d6a09a236533a1abc20 Reviewed-on: https://chromium-review.googlesource.com/c/1456616 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Michael Spang 740db7fd 2019-02-06T09:40:13 Vulkan: Add support for loading layers from DisplayVk Fuchsia needs a layer to support VK_KHR_swapchain. Add the ability for DisplayVk subclasses to request a layer in addition to an extension. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia Change-Id: If86c773d4bd4ebecaee4b1631d3d4975105fe849 Reviewed-on: https://chromium-review.googlesource.com/c/1456478 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi eb47e2c4 2019-02-05T16:26:41 Vulkan: improve calculation of swapchain image count Based on present mode, different values for the image count make sense. In mailbox mode, the driver will increase the number as necessary. In immediate mode, two buffers suffice. In fifo mode, we would ideally want triple-buffering. Bug: angleproject:2932 Change-Id: I45eec83d0292eea472b931fe81e49cde6d105c27 Reviewed-on: https://chromium-review.googlesource.com/c/1454290 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill bf5dbd8d 2019-02-05T16:41:41 Skip WhitelistMatchesSupport test on Android. Seems to have issues with stranger configs like the Sheild TV. Bug: angleproject:2286 Change-Id: I12d0dedeee9fbaaecb7341d376200a1afc758f12 Reviewed-on: https://chromium-review.googlesource.com/c/1454331 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 5f662c00 2019-01-31T13:53:59 Fix unit test for setting locale creating malformed HLSL shader code Fix malformed HLSL shader code in other locales than classic Bug: angleproject:1433 Change-Id: I30bad0bd0cfda465ec7200e48e12800d7d8efd26 Reviewed-on: https://chromium-review.googlesource.com/c/1447862 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Tim Van Patten 1f8132a1 2019-02-05T10:20:24 Vulkan: Reduce Default Descriptor Pool Max Sets The current value of kDefaultDescriptorPoolMaxSets is 2048, which allocates too much memory on a Pixel device, causing Android's low memory killer to terminate dEQP (leading to a test failure). This change reduces the value of kDefaultDescriptorPoolMaxSets to 128 to reduce the memory usage during the test. We suspect a later change may be required to dynamically grow the descriptor pools and update the recycling behavior. dEQP-EGL.functional.multicontext.non_shared_clear Bug: angleproject:3056 Change-Id: I8a681b509823956a58d6c08f64a23203458e075e Reviewed-on: https://chromium-review.googlesource.com/c/1454280 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Tobin Ehlis 4a41914b 2019-02-05T08:50:30 Vulkan: Add trace markers Add systrace markers for various RendererVk::finish paths in order to quickly identify cause of finishes. Also added marker to commandPool destroy which is currently a known hotspot on some devices. Bug: angleproject:2528 Change-Id: I5a2fc741679a58445d71a2edd6204cf9e869d236 Reviewed-on: https://chromium-review.googlesource.com/c/1454277 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e1a763d1 2019-01-25T15:43:33 Vulkan: Implement basic barrier perf test There's a lot more that can go into this perf test, but it requires further work on the Vulkan back end. Bug: angleproject:2999 Change-Id: Iea62bfd09639af108674dcf0a9e7c9d36ccddcef Reviewed-on: https://chromium-review.googlesource.com/c/1437734 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e923a63e 2019-02-05T08:32:33 Move ozone detection earlier in white list. Apparently IsOzone and IsLinux can both be true at the same time. This was confounding the config detection. Bug: angleproject:2286 Bug: chromium:928583 Change-Id: Ifd28242f396fd97447720b0c11caf8c1590f7222 Reviewed-on: https://chromium-review.googlesource.com/c/1454319 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d01c504e 2019-02-04T21:52:09 Fix issues with config whitelisting. The Android Shield TV confing was not properly initializing on ES1/Vulkan. Also Ozone configs were failing to initialize ES 3.0 contexts. Bug: angleproject:2286 Bug: chromium:928583 Change-Id: I7e54cdd1bf29791dffee3c70f7ebd3a1283eb5c4 Reviewed-on: https://chromium-review.googlesource.com/c/1453480 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 9bb59c5c 2019-01-25T11:46:24 Do not call eglMakeCurrent with invalid parameters When releasing the thread only call makeCurrent if we have a display to use. Calling with EGL_NO_DISPLAY is not valid (though some devices allow it.) Bug: angleproject:3102 Change-Id: I2cf48011294d0264d3b1cb0318a2a80715e37f60 Reviewed-on: https://chromium-review.googlesource.com/c/1436840 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 7085305f 2019-02-04T17:47:04 Use whitelist to filter test configs. Before we would try all the configs and filter those which fail to init. Now we gather the System Info and if successful check a list of supported configs. If System Info init fails we fall back to the prior method. This speeds up end2end tests init. It also allows for more reliable profile captures with VTune. It also will cause a test failure if a config unexpectedly fails. Previously we would silently pass without running the config's test. Includes a few changes: * D3D reference tests are disabled. They don't appear to be working. * Mac ES 3.1 is disabled due to lack of support. * WGL on AMD Windows is disabled due to lack of ES compatibility. * ES 3.2 contexts are explicitly disabled. * Vulkan is limited to ES 2.0. * The Windows GLES back-end is limited to NVIDIA with ES 2.0 & 3.0. * A unit test that verifies the whitelist matches availability. Bug: angleproject:2472 Change-Id: Ib72214bfbbff13c124fa15a6494d0aabb52f2e62 Reviewed-on: https://chromium-review.googlesource.com/c/1436168 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 7dafe3eb 2019-01-28T11:39:15 Vulkan: optimize image memory barriers Each image was tracking its current layout, but not the pipeline stage it was used. Additionally, the barrier access masks were inferred from the layout. This incurred two inefficiencies: - The src pipeline stage mask often included all stages, causing unnecessarily heavy barriers. - The access masks included all possible accesses by a layout, which in some cases was overkill, like VK_ACCESS_MEMORY_WRITE_BIT for VK_IMAGE_LAYOUT_GENERAL (which will eventually used for compute shader output). This change instead creates an enum where each element represents the layout, the stage and access masks when transitioning into the layout and the stage and access masks when transitioning out of that layout. The image will instead track a value of this enum (instead of VkImageLayout), which allows it to create the layout transition barriers as tight as possible, since it includes all the necessary information. Bug: angleproject:2999 Change-Id: I91535ce06d10530a6fc217ad3b94b7e288521e25 Reviewed-on: https://chromium-review.googlesource.com/c/1440074 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang f3e823db 2019-01-14T12:40:34 Vulkan: Store ImageHelper as a pointer in TextureVk and RenderbufferVk Storing ImageHelper as a pointer allows the storage to be swapped or shared with other objects. BUG=angleproject:2668 Change-Id: I2e51f24737be59ffe9f472e9b0b592774a792cd1 Reviewed-on: https://chromium-review.googlesource.com/c/1409404 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott eb67ca6e 2019-02-04T11:18:54 Improve EGLRecordableTest The initial implementation called eglInitialize() and eglTerminate() and didn't call ANGLETest::TearDown(). BUG=angleproject:2511 Change-Id: I563a84a72fe9bd20739519301023062f85446557 Reviewed-on: https://chromium-review.googlesource.com/c/1452529 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Geoff Lang 08f8fa66 2019-01-10T14:25:47 Vulkan: Merge the PixelBuffer logic into ImageHelper. To support EGL images efficiently, the pixel buffer needs to be tightly coupled with the image it will upload data to allowing textures to upload data to EGL images sourced from renderbuffers. The data will be uploaded to the image in the correct order if it comes from multiple sources and the check for pending uploads does not need to traverse EGL image siblings. BUG=angleproject:2668 Change-Id: Iebf59ed1e358ddc76843b8bcfac39b0363f66a3f Reviewed-on: https://chromium-review.googlesource.com/c/1405710 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 9544002e 2019-02-01T16:36:09 Add instructions on how to run glmark2+ANGLE on Linux Bug: angleproject:3125 Change-Id: I70d295d7ec1dbafc74add068165c5fbcadb48560 Reviewed-on: https://chromium-review.googlesource.com/c/1450222 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d94af173 2019-02-01T15:55:50 Vulkan: Store xcb visual id/type in egl::Config glmark2 uses the visual id, which is discarded in angle. This change retrieves these ids from X11 and stores them in the egl::Config. Bug: angleproject:3125 Change-Id: I2b524ecb71d675efa01cc9100a3dfe6fd57913f0 Reviewed-on: https://chromium-review.googlesource.com/c/1450221 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 52d861bd 2019-02-02T00:30:58 Disable -Wextra-semi-stmt Due to bot build failures. Partially reverts: c09ae15c0: Enable -Wextra-semi and -Wextra-semi-stmt. TBR=jmadill@chromium.org Bug: angleproject:3128 Change-Id: Ia3725e57d28cd899db59e1d8e760ad8ca3d5f70c Reviewed-on: https://chromium-review.googlesource.com/c/1450659 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 3d6e3004 2019-02-01T15:43:59 Implement EGL_ANDROID_recordable for Vulkan back-end. This initial implementation provides the extension, and always answers that the ANativeWindow is not recordable. BUG=angleproject:2511 Change-Id: Id3c57351dd1029bff7adf7166f9c82eee6e634b3 Reviewed-on: https://chromium-review.googlesource.com/c/1412507 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis d4c09dd3 2019-01-29T11:22:54 Fix unnecessary copy of for loop variables in ANGLE Bug: angleproject:3075 Change-Id: I34dd5d4ecded6def5a2b46369277312af0de7c8c Reviewed-on: https://chromium-review.googlesource.com/c/1443572 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 65cd76a7 2019-02-01T10:31:58 Use env variable to select default backend This is useful for situations where angle is substituted for the system library underneath an application oblivious to this change. The ANGLE_DEFAULT_PLATFORM variable is used when the display type is default to control the default back-end. Possible values are vulkan, gl and d3d11. If the value of this variable is not valid, or not supported by the current platform, the usual defaults are applied. Bug: angleproject:3125 Change-Id: I304b006e0a4149f78561038d01cede143640dafb Reviewed-on: https://chromium-review.googlesource.com/c/1450211 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c09ae15c 2019-02-01T14:16:32 Enable -Wextra-semi and -Wextra-semi-stmt. This will prevent users from accidentally making semicolon errors in the future. Bug: chromium:926235 Change-Id: I79a6fa376fb1ad8f0fcf1b65b1f572a035d1f4e9 Reviewed-on: https://chromium-review.googlesource.com/c/1446493 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 91d469aa 2018-08-27T10:47:25 Initial support for compiler AST validation This is to be able to catch issues introduced through AST manipulation earlier than shader compilation time, improving debuggability. Bug: angleproject:2733 Change-Id: Ic57bc72f2ab438e60f32553d602074f3d72cc4f5 Reviewed-on: https://chromium-review.googlesource.com/c/1199922 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill b7b0feaf 2019-02-01T08:43:55 Roll glslang. Includes a fix for the Fuchsia build and for -Wextra-semi. Bug: 926235 Bug: angleproject:2475 Change-Id: If3ef575c09656989274c91dec7657465b99978b2 Reviewed-on: https://chromium-review.googlesource.com/c/1449972 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cezary Kulakowski 4fb738fb 2019-02-01T10:53:44 Fix for linking of non-component angle_unittests Bug: chromium:927650 Change-Id: Ib944dee7e537820af53eb12538c33e7d0c4fbd68 Reviewed-on: https://chromium-review.googlesource.com/c/1449631 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a5410480 2019-01-31T19:55:55 Inline ValidateBindTexture. Tiny speed improvement in the perf test. Bug: angleproject:3117 Change-Id: Ie2892772da4808615b2a810ff523602894440b64 Reviewed-on: https://chromium-review.googlesource.com/c/1350490 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill cf9383ed 2019-01-31T19:52:49 Optimize VertexArray::bindVertexBufferImpl. Reduces the buffer nullptr checks to a single location. Also optimizes how the transform feedback binding counter is changed. Improves the score of the draw call vertex array change test. Bug: angleproject:3014 Change-Id: I08ff341e08194a407c24143965a3d568e92b97b7 Reviewed-on: https://chromium-review.googlesource.com/c/1406891 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 1a07524d 2019-01-31T14:50:06 Fix the misuse of deepCopy() When we use replaceChildNode function, the first argument must be the original child node instead of the deepCopy. Otherwise, replaceChildNode will do nothing since it will think deepCopy is a different node. In that case, RewriteExpressionsWithShaderStorageBlockTraverser::visitAggregate will enter an endless loop since ssbo argument is never really replaced. Test: dEQP-GLES31.functional.ssbo.* Bug: angleproject:1951 Change-Id: Ieb17a16ab2b3e0270328fafd7ba0944ca05f842f Reviewed-on: https://chromium-review.googlesource.com/c/1446686 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Geoff Lang 48d040e8 2019-01-18T10:43:45 D3D11: Fix reads and writes to EGL image textures with mip offsets. RenderTarget11 knows how to render to a specific mip of a texture but if TextureStorage11 attempts to read or write to the backing resource directly it does not select the correct subresource index. This manifested in calls to glTexSubImage going to the wrong mip of the resource. Fix TextureStorage11::getSubresourceIndex to look up the correct subresource in TextureStorage11_EGLImage. Add a test to cover this case in ImageTest.MipLevels. BUG=angleproject:2668 Change-Id: Id9270ab3bf9f37c7c671639bb8b7ce9578daaed6 Reviewed-on: https://chromium-review.googlesource.com/c/1422058 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Michael Spang 25839802 2019-01-30T18:02:51 Vulkan: Don't crash on diagnostics with null pMessageIdName This can be null and this will causes a crash in strstr(). Check for null before dereferencing this field. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia and angle_enable_vulkan_validation_layers=true Change-Id: I76a2738365838cb2f9cb54af7637417735762b69 Reviewed-on: https://chromium-review.googlesource.com/c/1446506 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 794364eb 2019-01-17T17:54:29 Add test cases of image built-in functions Add test cases that image accesses a mipmap level of texture, meanwhile exposes two driver bugs. Bug: angleproject:1987 TEST=angle_end2end_tests.ComputeShaderTest.* Change-Id: I4c43cdb97de8223d5e9af3757f41eb01eac81d0a Reviewed-on: https://chromium-review.googlesource.com/c/1415727 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 78380980 2019-01-30T13:14:01 Fix SPIRV-Tools deps in core validation layer. The spirv_tools_external_revision_generate action should no longer depend on ANGLE's DEPS file exclusively. We're using the version of SPIRV-Tools provided by Chromium or ANGLE depending on the client. Depending on DEPS directly should give the correct behaviour. Bug: chromium:926354 Change-Id: I87ac59f1e3f0d3a0b13df51fb6477940ff534dc7 Reviewed-on: https://chromium-review.googlesource.com/c/1446495 Reviewed-by: Nico Weber <thakis@chromium.org>
Jamie Madill 96a8e747 2019-01-30T10:30:06 Vulkan: Move and inline object wrapper classes. This moves the wrapper classes into their own file. It also inlines all the various methods for performance. The inline methods are kept out-of-class to avoid problems with circular dependencies. Also adds a few missing valid() checks to the inline methods. Improves the score of the VBO state change test by 1-2%. Bug: angleproject:3014 Change-Id: Ia760c3a6905a9a5aacfd05db443b72f34947385e Reviewed-on: https://chromium-review.googlesource.com/c/1436167 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Nico Weber a7429204 2019-01-30T09:29:06 Remove some extra semicolons. No behavior change. Bug: chromium:926235 Change-Id: I9215b4799a3c68887b8403be057180796ab5777a Reviewed-on: https://chromium-review.googlesource.com/c/1446311 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Jamie Madill fa7ca18f 2019-01-15T11:20:58 Vulkan: Enable dEQP point limit raster test. This requires enabling a workaround in the ANGLE shader translator to clamp the point size. Bug: angleproject:2599 Change-Id: I3171bdca5dd2e5af965e94ee2a955f46f8d706da Reviewed-on: https://chromium-review.googlesource.com/c/1412235 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 915d4068 2019-01-28T18:15:43 Roll dEQP (January/February 2019). Includes some new GLES tests added by kainino@. Bug: angleproject:3112 Change-Id: I0d81c8263eab3473dec49bb0cf3bca73cd38c6fb Reviewed-on: https://chromium-review.googlesource.com/c/1441051 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 82fddcb1 2019-01-18T14:27:43 Vulkan: Implement GLsync and EGLSync fence syncs That is required in GLES 3 for GLsync and EGL_KHR_fence_sync and EGL_KHR_wait_sync (or EGL 1.5) for EGLSync. The two constructs (GLsync and EGLSync) have similar semantics and share the implementation on the Vulkan backend. The implementation of a fence sync object is achieved through the combined use of a vkEvent and the implicit vkFence inserted at the end of every submission. Imagine the following command buffer: glDraw : Draw glCreateSync: Set Event <-- insertion of fence sync glDraw : Draw : Signal Fence <-- implicit fence at the end of submission glFlush : Submit Assume the serial S is associated to this submission. The following hold: - If event is set, the fence sync is signaled - If S is already finished, the fence sync is signaled - If client is waiting on the sync and S is not yet flushed, there will be a deadlock (unless multi-threaded and another thread performs the flush). The event is used to implement server waits (glWaitSync), as vkEvent is the only entity the GPU can signal and wait on within the command buffer. The wait is inserted in the command graph without incurring a flush, i.e. the wait can be within the same command buffer as event set. The event however does not support CPU waits (glClientWaitSync). vkFence is the only entity the CPU can wait on. For client wait therefore, the following algorithm is used: - If the event is already set, there's no wait -> already signaled - If timeout is zero, there's no wait -> timeout expired - If S is not flushed, flush it to ensure forward progress. - Wait until S is finished -> condition satisfied / timeout expired. Bug: angleproject:2466 Change-Id: I678995a6139dd9533fa8ad361a3d292b202c52a4 Reviewed-on: https://chromium-review.googlesource.com/c/1422552 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4b2e00f4 2019-01-28T23:37:55 Suppress EmptyBuffer test on Android GLES. Seems to fail on the Pixel XL. Bug: angleproject:2861 Change-Id: Ic1690abccd867251e83c0ae5e38c2bbd1c41615b Reviewed-on: https://chromium-review.googlesource.com/c/1441774 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0cb3b0f1 2019-01-28T09:55:20 Vulkan: Use glslang's internal BUILD.gn. This retires the ANGLE BUILD.gn file for glslang. Also makes a few more repos sync from Chromium's copy using build overrides. This should speed up Chrome checkouts slightly. Bug: angleproject:3088 Change-Id: I530f28d9b13469bbe6471a4c61e7353d599d81ec Reviewed-on: https://chromium-review.googlesource.com/c/1422545 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Enrico Galli 8922ac23 2018-12-14T13:44:29 ES31: Enable glBindBufferRange on SSBOs in the D3D renderer This patch enables binding a subset of a buffer with glBindBufferRange on the D3D renderer. Bug: angleproject:2990 Test: angle_end2end_tests Change-Id: Ib15b6257891191e28801f52c539b8b2daa80fa68 Reviewed-on: https://chromium-review.googlesource.com/c/1409880 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0f073667 2019-01-28T12:51:12 Update docs on wrangling and standalone infra. This migrates from the old Chromium wiki. Bug: angleproject:3097 Change-Id: Id1987f364e37bda319a4a6091b1a34c21b240706 Reviewed-on: https://chromium-review.googlesource.com/c/1430972 Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 4704eb02 2019-01-25T13:25:52 Add possibility to track GPU time in perf tests This paves the way for perf tests that measure GPU performance. Bug: angleproject:2999 Change-Id: I9d49d3e1256d8d18514885ae63264a5fbc5c29d1 Reviewed-on: https://chromium-review.googlesource.com/c/1436839 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 4c94788c 2019-01-28T11:12:31 Suppress RobustBufferAccessBehaviorTest.EmptyBuffer on Pixel XL Vk BUG=angleproject:3109 Change-Id: Ib8565e7a99dea90bb5fc966ffe0606a8ebc62fcc Reviewed-on: https://chromium-review.googlesource.com/c/1436052 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Andrii Shyshkalov 9e53fccb 2019-01-25T22:50:37 [commit-queue.cfg] Create new project-scoped CQ config. Autogenerated from ref-scoped cq.cfg located at: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/infra/config/branch/cq.cfg (pinned https://chromium.googlesource.com/angle/angle/+/988d9a068976cd893eb1cd1093299b166b58594a/infra/config/branch/cq.cfg) The new config is functionally equivalent to the old one. Upon landing, the new config will take effect once LUCI config service picks it up. If you see 'commit-queue.cfg' in https://luci-config.appspot.com/#/projects/angle , then it has been picked up. New commit-queue.cfg takes precedence over old cq.cfg, and once picked up makes it safe to remove old cq.cfg. See also internal PSA go/psa-migrate-to-commit-queue-cfg. Generated-by: https://crrev.com/i/815809 Bug: chromium:916292 Change-Id: I34579199a3aa1bf3ef4725b5d504f224cf2ee1e0 Reviewed-on: https://chromium-review.googlesource.com/c/1437794 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d51fbe34 2019-01-25T15:03:39 Fold buffer access validation into extensions. We only need to perform vertex array buffer validation if the WebGL compatiblity extension is enabled and robust access is not available. Although sometimes the range checks are useful for determining undefined behaviour they are not required by the OpenGL spec. They also slow down state updates significantly. This migrates the OOR tests into specific WebGL tests. It also requires a change to a Chromium test on the passthrough decoder. Improves perf by about 10% in the Vulkan VBO state change test. Also fixes some robust resource access cases for D3D11. Bug: angleproject:3000 Change-Id: Ice37f38f01c2f27bf32ed55657a30e69d8508335 Reviewed-on: https://chromium-review.googlesource.com/c/1390362 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 5904ee3f 2019-01-25T11:15:16 Vulkan: Fix timestamp query units Vulkan returns timestamps in cycles, which needs to be converted to nanoseconds (by multiplying by limits.timestampPeriod) for GLES. On NVidia, this multiplier seems to be 1 for a majority of their hardware, while the timer has less and more varying granularity on AMD, Intel and others. Bug: angleproject:2885 Change-Id: I34e08ad386e06619170975039385ce35cab025a5 Reviewed-on: https://chromium-review.googlesource.com/c/1436835 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 59d756e5 2019-01-16T15:26:49 Vulkan: Add a test for scissored depth and stencil clears. BUG=angleproject:3081 Change-Id: Ib6b17dbabdcb2a5ad5cf34b306bf5d3bd683ba0a Reviewed-on: https://chromium-review.googlesource.com/c/1415913 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 59b1ed4a 2019-01-24T13:55:17 Clean up generated object_tracker.h This file was generated on the trybots dry-running a change that rolls the vulkan repos [1]. This is causing a build failure on other CLs. [1] https://chromium-review.googlesource.com/c/angle/angle/+/1405714 Bug: 925077 Change-Id: I3101a4a3fdeb7c38ac5cfe6a1d621e03a9f49071 Reviewed-on: https://chromium-review.googlesource.com/c/1435154 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Tobin Ehlis 47ca1b2f 2019-01-23T16:11:41 Revert "Vulkan: Adding custom pool allocator" This reverts commit 05459e06fde5047ae8f5f90fe091c3255e6bc88e. Reason for revert: Clusterfuzz bugs flagged this commit Original change's description: > Vulkan: Adding custom pool allocator > > Copied pool allocator used by compiler to common and hooking it up as > custom allocator for CommandPools. Modified it to support reallocation. > > RendererVk now has a private poolAllocator and VkAllocationCallbacks > struct. The allocation callbacks are initialized to static functions > in RendererVk::initializeDevice() and then passed to CommandPool init() > and destroy() functions. > > Using the pool allocator saves Command Pool/Buffer clean-up time which > was showing us as a bottleneck is some cases. > > Bug: angleproject:2951 > Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4 > Reviewed-on: https://chromium-review.googlesource.com/c/1409867 > Commit-Queue: Tobin Ehlis <tobine@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=jmadill@chromium.org,tobine@google.com,ianelliott@google.com,syoussefi@chromium.org Change-Id: I363a351667c4dddef79833061790da90de477e70 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2951 Reviewed-on: https://chromium-review.googlesource.com/c/1430679 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Shahbaz Youssefi 2553690d 2019-01-23T09:49:03 Documentation update Mostly mentioning other platforms where older documentation mentioned only Windows. Bug: angleproject:1944 Change-Id: Ib020892fbdee22d3dc60aa71ac6b3c5f504728c4 Reviewed-on: https://chromium-review.googlesource.com/c/1430559 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5313c8a8 2019-01-14T17:02:52 Implement EGL_KHR_fence_sync and EGL_KHR_wait_sync EGL_KHR_fence_sync introduces the EGLSync object and associated create/destroy/clientWait functions. EGL_KHR_wait_sync adds the serverWait function on top of that. Bug: angleproject:2466 Change-Id: Iebb239a85c4471ea18b3c3a8a83b793af555e31d Reviewed-on: https://chromium-review.googlesource.com/c/1412261 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 828acb39 2019-01-22T15:01:55 Enable ParallelCompile for Mac Linked in parallel, GLSLTest_ES3.LargeNumberOfFloat4Parameters fails on the Mac asan bots. It looks a driver bug caused by handling some long GLSL expressions. This works around it by breaking down the expression in the test from: return a0 + a1 + ... + alast; to: vec4 sum = vec4(0, 0, 0, 0); sum += a0; sum += a1; ... sum += alast; return sum; This also fixes a CGLPixelFormat leak, although it's irrelevant to the bot failures. BUG=922936 BUG=angleproject:3087 BUG=angleproject:3047 Change-Id: I20249ada43e9dd226f582a568ed4ed50a0e4375d Reviewed-on: https://chromium-review.googlesource.com/c/1426430 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Geoff Lang 0c2c923e 2019-01-14T16:01:38 Vulkan: Don't allow creation of ES3 contexts. Refactor RendererVk::getMaxSupportedESVersion to limit max supported versions similar to RendererGL. This allows dEQP-EGL.functional.robustness.reset_context.shaders.infinite_loop.* tests to pass but they are currently skipped due to TDR issues on some platforms. When we start to test on top of ES3 contexts, we will either have to supress some dEQP EGL tests or expose it some other mechanism. BUG=angleproject:3058 Change-Id: I8d28fe75edd8346b46d197e0217afbee1c19b7e3 Reviewed-on: https://chromium-review.googlesource.com/c/1409869 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Tobin Ehlis 05459e06 2019-01-17T12:25:54 Vulkan: Adding custom pool allocator Copied pool allocator used by compiler to common and hooking it up as custom allocator for CommandPools. Modified it to support reallocation. RendererVk now has a private poolAllocator and VkAllocationCallbacks struct. The allocation callbacks are initialized to static functions in RendererVk::initializeDevice() and then passed to CommandPool init() and destroy() functions. Using the pool allocator saves Command Pool/Buffer clean-up time which was showing us as a bottleneck is some cases. Bug: angleproject:2951 Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4 Reviewed-on: https://chromium-review.googlesource.com/c/1409867 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c81e7bfe 2019-01-18T15:35:55 Vulkan: refactor CommandGraphResource Merged back RecordableGraphResource into CommandGraphResource. Queries didn't really need to be a resource, as they always inserted separate single-command nodes in the graph. The CommandGraph class is augmented with a few functions that generate such nodes. This is in preparation for debug markers, as they too require such nodes. Bug: angleproject:2853 Change-Id: I5251a0e0fdd42ed1126921b4acc13687a14af9cd Reviewed-on: https://chromium-review.googlesource.com/c/1422549 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 37d2e606 2019-01-10T12:46:16 Make BlobCache use independent from ANGLE_program_cache_control The decision to enable caching or not was based on the size of the cache as directed by eglProgramCacheResizeANGLE, which is incorrect for applications that only use the ANDROID_blob_cache extension. The new behavior is as follows: - If EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE is specifically requested and set to true, but the size of the cache is 0, caching is disabled for the context. - If EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE is specifically requested and set to false, caching is disabled for the context. - Otherwise, caching is left enabled for the context, although the cache possibly has a size of zero, which effectively disables it. During application execution, if the blob cache callbacks are set, the application cache will be used. Bug: 896406, angleproject:2516 Change-Id: Ic0cabda03fb6bf53994e86e3ede30afc8021d67e Reviewed-on: https://chromium-review.googlesource.com/c/1405708 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill bf433727 2019-01-20T20:10:17 Use binary merge strategy for code generator hashes. The binary merge strategy marks the file as conflicted but doesn't actually change the file contents. This keeps the json hashes file valid and alerts the user that the generator needs to be re-run. Bug: angleproject:3083 Change-Id: Ia04e96d56a2d92ee061f25e7de79b6a1fd3ce4ab Reviewed-on: https://chromium-review.googlesource.com/c/1423519 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7403dd2c 2019-01-16T13:27:17 Vulkan: Inline transition query. Slight speed improvement in the Vulkan vertex array state change test. Bug: angleproject:3014 Change-Id: I4a5cd26849cd247b7e67cd6bda083aabeb4e34c0 Reviewed-on: https://chromium-review.googlesource.com/c/1406890 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill a63cc59f 2019-01-16T13:27:16 Vulkan: Don't store vertex attrib format and stride. We only use these values in vertex conversion. We can instead pass more info to the convertGPU/CPU functions. In client attribute streaming we can query the format table a second time. This is a bit slower. But the runtime of attribute streaming would usually be dominated by the conversion function time. So it shouldn't regress any real work perf. This saves on a bit of storage and memory overhead in the vertex sync functions in VertexArrayVk. Bug: angleproject:3014 Change-Id: I401eeff024664aa0efeea710503c0f619e6d4f22 Reviewed-on: https://chromium-review.googlesource.com/c/1406889 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi c3abb7f1 2019-01-17T11:26:48 Fix MultiDraw shaders when loaded from cache State updates that need to be done after linking vs. deserializing can get out of sync, as was the case for mDrawIDLocation (introduced in 1bf18ce9e2caca7067b4439373f4fb04a5cd7d21). This commit introduces a common function that's called from both paths to hopefully avoid such issues in the future. The serialize/deserialize functions are moved from MemoryProgramCache to the Program itself. Bug: 890539,angleproject:2516 Change-Id: Idc5b87de53298aacbb1884e79e721b876281fb13 Reviewed-on: https://chromium-review.googlesource.com/c/1417970 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 6ae34889 2019-01-18T11:44:54 Suppress test crashing on Mac ASAN AMD too. The initial suppression didn't apply to AMD but the test crashes there too. BUG=angleproject:3087 BUG=chromium:923399 Change-Id: I8ccffbb7746dd6fc6aa3eb6edaaef30aaae8c097 Reviewed-on: https://chromium-review.googlesource.com/c/1423057 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Cody Northrop 85ca71c2 2019-01-16T15:46:23 Create a whitelist for use in Android platform In order to reduce the startup impact to near zero, we are creating a whitelist to be checked before parsing rules. The whitelist will be shared over Global Settings. To generate it, we will listen for intents at boot (LOCKED_BOOT_COMPLETED) and when ANGLE itself has been updated (MY_PACKAGE_REPLACED). The whitelist can also be populated by hand: adb shell settings put global angle_whitelist app1,app2,appN We plan to further mitigate the ANGLE-enabled app impact by parsing the full rules when creating the whitelist, off of the critical path. Bug: angleproject:3086 Test: Internal CTS tests and manual verification Change-Id: I6263358e2fdbfaa7183d1b941005b5455285cbff Reviewed-on: https://chromium-review.googlesource.com/c/1415715 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 1f750d1e 2019-01-16T13:27:16 Even more inlining and micro-optimization. Improves perf by about 3-4% on the Vulkan VBO state change test. Bug: angleproject:3014 Change-Id: If4415e503cd883cf7de6387bf1ebbca0e5fc994e Reviewed-on: https://chromium-review.googlesource.com/c/1393907 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill c8c7d400 2019-01-16T13:27:15 Use a table for vertex attrib type validation. No clearly sampled effect on performance but should require fewer instructions. May lead to future improvements. Bug: angleproject:3014 Change-Id: I64e155926ae2c553b059265780e72e91f91f097c Reviewed-on: https://chromium-review.googlesource.com/c/1393906 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Qin Jiajia 15214423 2019-01-07T12:44:44 ES31: Add top_level_array_stride support Bug: angleproject:1920 Change-Id: Id18c6cc1bb840c05f73a019156c462886f01d9eb Reviewed-on: https://chromium-review.googlesource.com/c/1396745 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 85ca1895 2019-01-16T13:27:15 Vulkan: Store reference to context command buffer. This frees us from checking the FB every draw. Slightly reduces time spent in all draw methods. Improvement seen on the draw call overhead tests. Scores went from 28.17 ns/draw to 26.76 ns/draw on my machine. In a future improvement we could make this command buffer a dirty bit. Currently it's a bit slower to call a handler function due to the dispatch table. Likely we could optimize this by reverting back to a dirty bit switch and inlining the handler functions. That is left for future work. Vulkan is happy enough to run multiple RenderPasses and bind different Pipelines in the same command buffer. But ANGLE defers RenderPass init until we submit our work. Thus we can only support one RenderPass per secondary buffer. Test: angle_perftests DrawCall*/vulkan_null Bug: angleproject:3014 Change-Id: I89fd0d9e0822400a5c5a16acb5a9c400a0e71ab5 Reviewed-on: https://chromium-review.googlesource.com/c/1393905 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 3159b2e5 2019-01-17T16:39:03 Suppress test crashing on Mac ASAN. GLSLTest_ES3.LargeNumberOfFloat4Parameters/ES3_OPENGL started crashing after the parallel compile enablement on OpenGL and disabling the workers didn't fix it. BUG=angleproject:3087 Change-Id: I317b140e66b04102059486381ef70e16600fad12 Reviewed-on: https://chromium-review.googlesource.com/c/1419007 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov 5fe7c5b9 2019-01-17T12:16:34 Include common/platform.h where used Bug: 922443 Change-Id: I35b9e34266d4a15f8d0769c2770801b1b0511398 Reviewed-on: https://chromium-review.googlesource.com/c/1418091 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang d46165e3 2019-01-17T15:49:55 Reland "Don't call Texture::onDestroy twice for the zero textures." This reverts commit 3adcf1e4cb5ce3cc1cc8a3dfed4ec44dff45f5ae. Reason for revert: Likely not the cause of failures seen. Original change's description: > Revert "Don't call Texture::onDestroy twice for the zero textures." > > This reverts commit d3e0e84ce7e1fcde7bbe71ebfba009ddd5942de3. > > Reason for revert: likely cause for crbug.com/922296 > > BUG=chromium:922296 > > Original change's description: > > Don't call Texture::onDestroy twice for the zero textures. > > > > The BindingPointer will call onDestroy when all references are removed, no > > need to do it explicitly. > > > > BUG=angleproject:3070 > > > > Change-Id: Ic5dd4da8f73e204d26d9d3a3c6e1eff9fded5411 > > Reviewed-on: https://chromium-review.googlesource.com/c/1409868 > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Geoff Lang <geofflang@chromium.org> > > TBR=geofflang@chromium.org,jmadill@chromium.org > > Change-Id: I38097218d49940e7ac3ad914714294b019c154fd > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: angleproject:3070 > Reviewed-on: https://chromium-review.googlesource.com/c/1413239 > Reviewed-by: Corentin Wallez <cwallez@chromium.org> > Commit-Queue: Corentin Wallez <cwallez@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:922296, angleproject:3070 Change-Id: I58b1c445f81e4a7f38df375fd3311043b571e834 Reviewed-on: https://chromium-review.googlesource.com/c/1417770 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang c66cd693 2019-01-17T10:37:51 GL: Temporarily disable parallel shader compile. The Skia bots have been unable to roll ANGLE since parallel compile landed in ANGLE. Speculatively disable parallel compile using a workaround. Failed roll: https://skia-review.googlesource.com/c/skia/+/184705 Also seen instability on Linux, Mac and Windows in 922936. BUG=922936 BUG=849576 Change-Id: I7116b3f6541425135984c52a8077bdb98d961784 Reviewed-on: https://chromium-review.googlesource.com/c/1415729 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill b3bdd2ac 2019-01-17T15:51:19 Revert "Re-enable 2DArray Copy Texture Tests" This reverts commit 91b95ce0afbb55ebde1d39c2ed9632526ee365c5. Reason for revert: Tests passing in release but failing in Debug. https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win10%20FYI%20Debug%20%28NVIDIA%29/2556 [ RUN ] Texture2DArrayCopy.SnormFormats/ES3_D3D11 Error getting extension string from EGL Window. ../../third_party/angle/src/tests/test_utils/ANGLETest.cpp(493): error: Expected equality of these values: (0x3000) Which is: 12288 eglGetError() Which is: 12289 Stack trace: Backtrace: StackTraceGetter::CurrentStackTrace [0x00AD4A9A+90] testing::internal::UnitTestImpl::CurrentOsStackTraceExceptTop [0x00AEAD5A+74] testing::internal::AssertHelper::operator= [0x00AEA86B+75] ANGLETestBase::swapBuffers [0x00A743C0+256] ANGLETestBase::ANGLETestTearDown [0x00A73817+167] ANGLETest::TearDown [0x00A7671A+26] angle::CopyTexture3DTest::TearDown [0x002A085D+29] [ FAILED ] Texture2DArrayCopy.SnormFormats/ES3_D3D11, where GetParam() = ES3_D3D11 (59 ms) [----------] 1 test from Texture2DArrayCopy (59 ms total) [----------] 3 tests from CubeMapTextureTest [ RUN ] CubeMapTextureTest.RenderToFacesConsecutively/ES2_D3D11_10_0 Assertion failed: mState.surfaceSet.empty(), file ../../third_party/angle/src/libANGLE/renderer/DisplayImpl.cpp, line 23 abort() has been called Received fatal exception EXCEPTION_BREAKPOINT Backtrace: Original change's description: > Re-enable 2DArray Copy Texture Tests > > Re-enables 3 tests that were previously failing on Nvidia hardware on > D3D11. The tests seem stable after a trybot driver update. > > Bug: angleproject:2896 > Change-Id: I17d76a5a67fd57ba7257ef22aa5a1371bf5ed55e > Reviewed-on: https://chromium-review.googlesource.com/c/1308735 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,brandon1.jones@intel.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:2896 Change-Id: I509756e8e6433fd3d04bc68a72e7cc7647485b56 Reviewed-on: https://chromium-review.googlesource.com/c/1417771 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 94d8a9a4 2019-01-17T08:47:57 ES31: Enable several SSBO end2end tests on D3D11 This patch enables several SSBO tests on D3D11 in ANGLE end2end tests. Bug: angleproject:1951 Change-Id: I1ba78133e5bbe581e8330c1c43755c174e28bf39 Reviewed-on: https://chromium-review.googlesource.com/c/1415721 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
jchen10 a100d8f4 2018-12-29T16:39:55 ParallelCompile: add GL backend support For GL backend, at first each worker thread must have a naitve context for its own to work in. These worker contexts have to be shared from the main context, so that all shader and program objects are seen in any context. This extends backend displays to create and destroy the worker contexts. RendererGL manages and allocates them to the worker threads. ShaderImpl has a new compile method added to do the actual glCompile work in worker thread. The ProgramGL's link method is broken down by introducing the LinkEventGL class. Bug: chromium:849576 Change-Id: Idc2c51b4b6c978781ae77810e62c480acc67ebb5 Reviewed-on: https://chromium-review.googlesource.com/c/1373015 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez bb4be1ad 2019-01-16T14:43:45 Suppress OcclusionQueriesTest.MultiContext on Win NVIDIA Vk BUG=angleproject:3080 Change-Id: I915778ee239755bfd8aadc25235d36cd52383415 Reviewed-on: https://chromium-review.googlesource.com/c/1415852 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill bab0302b 2019-01-16T14:12:28 Make path utils return std::string. This avoids potential issues with returning local variables. It also solves potential threading conflicts by returning the string value instead of a pointer. The code should be optimized with RVO with a modern c++ compiler. Bug: angleproject:2601 Change-Id: I8a01702d2675a17dd060f27920105efab0c49454 Reviewed-on: https://chromium-review.googlesource.com/c/1415910 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 465d6090 2019-01-02T16:21:18 Add GL_ANGLE_provoking_vertex on D3D11 and GL. This extension is a subset of GL_ARB_provoking_vertex without the QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION query. Bug: angleproject:2829 Change-Id: I907a4d16b7b13d3bbfb948842091eedd7b6a8b77 Reviewed-on: https://chromium-review.googlesource.com/c/1410289 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6e18a238 2019-01-16T13:27:14 Optimize more front-end VertexArray binding. Improves perf slightly (1-2%) in the Vulkan VBO state change test. Bug: angleproject:3014 Change-Id: Ia8082b5b3f5e847a6b2775e896893fa8d38c1afd Reviewed-on: https://chromium-review.googlesource.com/c/1393904 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill dd34b3b9 2019-01-16T09:59:54 Pack VertexAttribType enum. This improves performance slightly in vertex array format checks. Instead of needing to switch on GLenum values we can use packed arrays and tables to determine the values we need. Does not significantly affect performance but will enable future work. Bug: angleproject:3074 Change-Id: I6f4821a463e9b41fe3f8c8967eb3ed4c1d6b84be Reviewed-on: https://chromium-review.googlesource.com/c/1393903 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Joonatan Saarhelo a5d2d55d 2019-01-16T13:21:05 Remove expected SSBO failures on Windows NVIDIA These failures no longer occur in version 411.95, the version that the drivers in testbots are currently being updated to. Bug: angleproject:2272 Change-Id: I826ab973ed6fe1a08372c8139676d2f7a328d47b Reviewed-on: https://chromium-review.googlesource.com/c/1411546 Reviewed-by: Joonatan Saarhelo FI <jsaarhelo@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ab2bfa81 2019-01-15T19:06:47 Enable Chromium clang style plugin for libANGLE. This fixes a few style warnings: * auto should not deduce to raw pointer type * inlined virtual methods are not allowed * non-trivial constructors and destructors should be explicit * inlined non-trivial constructors should not be in-class * missing override keywords Bug: angleproject:3069 Change-Id: I3b3e55683691da3ebf6da06a5d3c729c71b6ee53 Reviewed-on: https://chromium-review.googlesource.com/c/1407640 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Corentin Wallez 3adcf1e4 2019-01-16T00:40:38 Revert "Don't call Texture::onDestroy twice for the zero textures." This reverts commit d3e0e84ce7e1fcde7bbe71ebfba009ddd5942de3. Reason for revert: likely cause for crbug.com/922296 BUG=chromium:922296 Original change's description: > Don't call Texture::onDestroy twice for the zero textures. > > The BindingPointer will call onDestroy when all references are removed, no > need to do it explicitly. > > BUG=angleproject:3070 > > Change-Id: Ic5dd4da8f73e204d26d9d3a3c6e1eff9fded5411 > Reviewed-on: https://chromium-review.googlesource.com/c/1409868 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org Change-Id: I38097218d49940e7ac3ad914714294b019c154fd No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3070 Reviewed-on: https://chromium-review.googlesource.com/c/1413239 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 7098cff5 2019-01-15T18:33:42 Make BUILD.gn targets into templates. This allows us to "globally" add and remove certain configs as long as we use the new templates. This simplifies the logic of adding configs for stuff like extra warnings and default include dirs. As well it simplifies removing certain common unwanted configs. Generally simplifies the logic in BUILD.gn. Will allow for easily suppressing the clang-plugins config instead of using a global setting in .gn. Then we can enable the additional warnings config-by-config. Also fixes some warnings that turned up after we enabled the extra warnings config in our tests. Also moves the dEQP tests main to be consistent with the other test main files. Bug: angleproject:3069 Change-Id: I5a8166cd0f5a7926822c171fcaf473fc86b3ffc1 Reviewed-on: https://chromium-review.googlesource.com/c/1409871 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten c8be560b 2019-01-14T17:34:09 Fix show_angle_in_use_dialog_box Global.Setting Name The Global.Setting was previously named angle_in_use_dialog_box, which doesn't match some of the other variables and uses on the Android side. This change will update it to show_angle_in_use_dialog_box to make everything match both here and where it's used within Android. Bug: angleproject:3006 Test: Load an app with ANGLE enabled and verify dialog box is shown. Test: Load an app without ANGLE and verify dialog box is not shown. Change-Id: I808ebc94f706a019eca6f3911a702853642926e0 Reviewed-on: https://chromium-review.googlesource.com/c/1410286 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 5f82dde6 2019-01-14T11:38:33 Fix block size calculation w.r.t variable-size arrays In SSBOs, there can be a last array whose size is not specified (i.e. can take any size). This is especially prevalent in Compute shaders that process a buffer. In the shader translator, the size of this array is given as 0. HLSL register offset calculation was tripped up by this as it used (arraySize - 1). The optimization in [1] effectively removed a test that would perform this calculation only when the size is positive. This change adds back this guard. [1] https://chromium-review.googlesource.com/c/angle/angle/+/684742 Bug: angleproject:2516 Change-Id: If45ac934f542c5ffcad67f962eebe45a3aeba70b Reviewed-on: https://chromium-review.googlesource.com/c/1409403 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang d3e0e84c 2019-01-14T15:59:18 Don't call Texture::onDestroy twice for the zero textures. The BindingPointer will call onDestroy when all references are removed, no need to do it explicitly. BUG=angleproject:3070 Change-Id: Ic5dd4da8f73e204d26d9d3a3c6e1eff9fded5411 Reviewed-on: https://chromium-review.googlesource.com/c/1409868 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Xinghua Cao f3179a6a 2018-07-12T16:22:06 ES31: Implement bindImageTexture binds a single layer on D3D backend Dynamically generate image2D variables' declaration and function definition in libANGLE. Bug: angleproject:1987 TEST=angle_end2end_tests.ComputeShaderTest.* Change-Id: Idacc756f7bd15f22eccb1d689e18e997f3e74159 Reviewed-on: https://chromium-review.googlesource.com/c/1142885 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 15460e36 2019-01-03T23:38:44 In PixelTransfer11, center offset should be 1/size, not 1/(size-1). Bug: angleproject:3039 Change-Id: Ie97bfb5aa3cfe7cd2c4b1d22b5b4a8d82a5e5170 Reviewed-on: https://chromium-review.googlesource.com/c/1407251 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
jchen10 55f20f68 2019-01-14T15:44:25 Fix generate_loader.py The message printed by the #error macro should be enclosed in marks for gcc. Bug: angleproject:2995 Change-Id: I5d8ebb28ef5e225eb88990642b6b58936cad4369 Reviewed-on: https://chromium-review.googlesource.com/c/1407542 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Thomas Anderson fc99468d 2019-01-14T23:46:59 Revert "Fix Android ASAN tests when is_component_build=false" This reverts commit e4a52cb53f877637ffb17677396d02d9f8a907a4. Reason for revert: No longer necessary after https://chromium-review.googlesource.com/c/chromium/src/+/1409558 Original change's description: > Fix Android ASAN tests when is_component_build=false > > Context in Chromium CL: > https://chromium-review.googlesource.com/c/chromium/src/+/1405277/ > > This CL must be landed first. > > BUG=chromium:916973 > R=​thakis,cwallez,fjhenigman,geofflang,jmadill,ynovikov > > Change-Id: Icde4ec98c9031a262e0dfafa5cfe2a702c4c4e3e > Reviewed-on: https://chromium-review.googlesource.com/c/1405908 > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Reviewed-by: Nico Weber <thakis@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> TBR=thakis@chromium.org,ynovikov@chromium.org,fjhenigman@google.com,geofflang@chromium.org,jmadill@chromium.org,cwallez@google.com,thomasanderson@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:916973 Change-Id: Ie9609db8e5d5f71acdc22d839b94f3e843bfe3ca Reviewed-on: https://chromium-review.googlesource.com/c/1410282 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org>
Brandon Jones 91b95ce0 2018-10-30T12:32:25 Re-enable 2DArray Copy Texture Tests Re-enables 3 tests that were previously failing on Nvidia hardware on D3D11. The tests seem stable after a trybot driver update. Bug: angleproject:2896 Change-Id: I17d76a5a67fd57ba7257ef22aa5a1371bf5ed55e Reviewed-on: https://chromium-review.googlesource.com/c/1308735 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten c2ee2ccb 2019-01-11T10:39:15 Vulkan: Don't support EGL_SWAP_BEHAVIOR_PRESERVED_BIT dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#no_draw dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#post_clear dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#post_render dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_clear dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_clear_post_clear dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_clear_post_render dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_render dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_render_post_clear dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap#pre_render_post_render Bug: angleproject:3051 angleproject:2716 Change-Id: I3607f45cd2f447fb0a95f91ffd9aa93000dfa18c Reviewed-on: https://chromium-review.googlesource.com/c/1407248 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 9567b0c5 2019-01-14T13:45:58 Clear VAO dirty bits in NULL back-end. This is the back-end responsibility now. Bug: chromium:921338 Change-Id: I6181210a80ec7d635382df74d842d8a899ad2894 Reviewed-on: https://chromium-review.googlesource.com/c/1409405 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 17a50e17 2019-01-10T22:05:43 Vulkan: Enable robust buffer access. This is not a complete implementation because it does not have the ability to disable the physical device feature. It does pass the current set of robust access tests. But there could be a performance regression on platforms that have a slower impelmentation. We would want the ability to support cases with bufer robustness on or off. Bug: angleproject:3062 Change-Id: I7d6eb889debcbd32f6ed809b526677123f872726 Reviewed-on: https://chromium-review.googlesource.com/c/1403967 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c759b8b4 2019-01-03T15:16:50 Vulkan: More Vertex Array optimizations. Inlines a number of Vulkan vertex array methods. Also changes the way vertex buffers are bound. Note that Vulkan doesn't support NULL buffer bindings. Thus we create an emulated NULL buffer to work around the problem of having gaps in the bound vertex buffers. This allows us to use a single bind call for ranges of vertex buffers even when there are gaps. Also changes how vertex array dirty bits are reset. Instead of calling memset to clear the affected buffers we pass a mutable pointer to the Vertex Array sync state. This allows us to only reset the dirty bits that we sync. This saves on the memory clearing time. Improves perf by about 10% in the Vulkan VBO state change test. Bug: angleproject:3014 Change-Id: Ib7b742dff7897fc891606a652ea0b64255a24c86 Reviewed-on: https://chromium-review.googlesource.com/c/1390360 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>