Log

Author Commit Date CI Message
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>
Jamie Madill 633d5e69 2018-12-23T19:58:01 Vulkan: Put viewport and scissor back in pipeline desc. Turns out this is much faster than using dynamic state. When we support multiple viewports it might be easier to use dynamic state since we won't need to make an overly large pipeline description. We could support both methods using a flag to indicate the viewport and/or scissor regions are invalid. Until then we can remove the pipeline and scissor dirty bits. Improves perf by about 15% in the Vulkan VBO state change test. Bug: angleproject:3013 Change-Id: I4572250626a9a0f0ca3451b17e8f0de186416cae Reviewed-on: https://chromium-review.googlesource.com/c/1390359 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5bca4fed 2019-01-09T17:07:06 Vulkan: Switch to EXT_debug_utils EXT_debug_utils is a (relatively) new extension that subsumes EXT_debug_report and EXT_debug_marker extensions. This change uses EXT_debut_utils (if available) to receive debug messages, keeping EXT_debug_report as fallback. Bug: angleproject:2798 Change-Id: Ia6767604548704e18f8150a54d2533c0b1197841 Reviewed-on: https://chromium-review.googlesource.com/c/1403955 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 2450d8dd 2019-01-11T14:41:04 Vulkan: Squash Vertex Pipeline info. Instead of using 8 bytes per vertex we can reduce the space used for the divisor to 8 bytes. For larger values than 255 we can emulate the divisor by unrolling the draw call. We will likely need to do this in any case for instanced draws when the instancing extension isn't available. The tighter packing will allow for us to move the viewport and scissor back into the pipeline description. It seems this is much faster than using dynamic state. Every state change that would pull in a new Pipeline would need the viewport and scissor re-applied. It seems these driver calls are costly. Does not improve perf significantly but enables future improvements. Bug: angleproject:3013 Change-Id: I1a41c3acadc6fbd47c7a7b961c706e82f78de936 Reviewed-on: https://chromium-review.googlesource.com/c/1390358 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill a3b64e86 2019-01-11T14:07:21 Fix skip for InterleavedAttributeDataBenchmark on GL. Should be setting mSkipTest instead of calling abortTest(). Bug: 921004 Change-Id: I7bead806eef0c7825348d509a9dce7ed1bf34825 Reviewed-on: https://chromium-review.googlesource.com/c/1407250 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 92ee1f9f 2019-01-11T08:02:07 Suppress InterleavedAttributeDataBenchmark on GL. This is timing out on Intel. Would be nice to narrow the suppression but we don't have that check yet in perf tests. Bug: chromium:921004 Change-Id: Icb8bf2d1222b9ff9790877dc051797a1291ad02b Reviewed-on: https://chromium-review.googlesource.com/c/1406892 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 18af9a5a 2018-12-04T12:24:50 ANGLE In Use Dialog Box When ANGLE is enabled for an app, show a dialog box to the user to indicate that ANGLE is in use. This is useful because there are not (or at least shouldn't be) any visual indication that a different OpenGL driver is in use. Clean up some missed renaming/logging related to the "Enable ANGLE for all" setting. 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: I46ec89567c93efaf156a4801948cd48aabd5f4fb Reviewed-on: https://chromium-review.googlesource.com/c/1383374 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Tom Anderson e4a52cb5 2019-01-10T11:02:50 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>
Enrico Galli a3b2e71f 2018-12-08T16:46:48 ES31: Support for GL_BUFFER_DATA_SIZE on GL_ATOMIC_COUNTER_BUFFER in D3D This commit adds support for querying the GL_BUFFER_DATA_SIZE of GL_ATOMIC_COUNTER_BUFFER in the D3D renderer. Bug: angleproject:1729 Test: angle_end2end_tests Change-Id: Id6aae0d92c5e0960b2b245ba7d83970b04ba4eed Reviewed-on: https://chromium-review.googlesource.com/c/1399143 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott b814bbb7 2019-01-10T12:02:47 Temporarily disable calling GetSystemInfo for rules processing. A bug on Android is causing <something> to crash if the rules-processing code calls GetSystemInfo, which in turn calls Vulkan. While this is being investigated, we will temporarily disable calling GetSystemInfo (instead, insert dummy data that won't match any actual GPU), so that the rest of the rules processing will still work. Bug: angleproject:3063 Change-Id: I9976fd57ba001099b94ebe7186739477bf0c8f79 Reviewed-on: https://chromium-review.googlesource.com/c/1405709 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3f0c4a56 2019-01-10T10:20:35 Vulkan: Faster state transitions. Implements a transition table from Pipeline Cache entry to state change neighbouring Pipeline Cache entries. We use a 64-bit mask to do a quick scan over the pipeline desc. This ends up being a lot faster than doing a full hash and memcmp over the pipeline description. Note that there could be future optimizations to this design. We might keep a hash map of the pipeline transitions instead of a list. Or use a sorted list. This could speed up the search when there are many transitions for cache entries. Also we could skip the transition table and opt to do a full hash when there are more than a configurable number of dirty states. This might be a bit faster in some cases. Likely this will be something we can add performance tests for in the future. Documentation is also added in a README file for the Vulkan back end. This will be extended over time. Improves performance about 30-35% on the VBO state change test. Bug: angleproject:3013 Change-Id: I793f9e3efd8887acf00ad60e4ac2502a54c95dee Reviewed-on: https://chromium-review.googlesource.com/c/1369287 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 80766cfa 2019-01-10T10:20:34 Vulkan: Update individual VAO attribs when dirty. This simplifies the dirty state updates in VertexArrayVk. It also lets us use a smaller dirty bit mask when a single attribute is marked dirty in a vertex array. Improves performance by about 1-2% in the VBO state change test. Will allow for better performance using a pipeline transition table. Bug: angleproject:3013 Change-Id: I25c5172b3f41b7abac6b8273c8f9cd42eb46cc9f Reviewed-on: https://chromium-review.googlesource.com/c/1403958 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang b827f490 2018-12-14T12:09:41 GL: Work around errors generated during query caps initialization. Nexus5X drivers generate INVLAID_ENUM errors when querying GL_QUERY_COUNTER_BITS. Add device detection from renderer string. BUG=angleproject:3027 Change-Id: I367e20c79e1c4e53c26d94603d9a893604b51165 Reviewed-on: https://chromium-review.googlesource.com/c/1374274 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Courtney Goeltzenleuchter c05c1416 2019-01-03T12:40:13 Add validation layers to Android apk The compressed symbol support requires explicitly listing the libraries, so add validation libraries. Use list of ANGLE libraries to reduce duplication Bug: angleproject:2981 Change-Id: Ia8feb58d2a2ee66299b00bbb1fd3a4d9094c0b68 Reviewed-on: https://chromium-review.googlesource.com/c/1394569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi b5ba549a 2019-01-02T15:19:22 Vulkan: Shader path for texture copy when image is not initialized This change implements staging image/texture copies when the destination image is not yet fully initialized. With this change, CPU readback for glCopyTex[Sub]Image2D and glCopy[Sub]TextureCHROMIUM should happen only if the texture formats don't allow a fragment-shader based copy. Bug: angleproject:2958 Change-Id: I04087e14ea8fb6fbc731598c5493e44651c22c01 Reviewed-on: https://chromium-review.googlesource.com/c/1393909 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 73397e8e 2019-01-09T10:33:16 Add presubmit check for GN headers and code formatting. These two checks are lifted directly from the Chromium code base. Also adds a presubmit check for a patch description. Also adds some checks to the "on commit" function so "git cl presubmit" can work. Also reformats the style of the presubmit script a bit to match the patterns in the Chromium presubmit. Bug: angleproject:2626 Bug: angleproject:3054 Change-Id: Iff29b8856cf9eb9531e893cd0b0d80c0834b7676 Reviewed-on: https://chromium-review.googlesource.com/c/1403255 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 98a3550b 2019-01-08T22:09:39 Add a presubmit step to make sure autogenerated code is up-to-date While here, added a presubmit test for the Bug: tag too. Bug: angleproject:3046 Change-Id: I7030685230b4ce4bfc435c14ef85324e16b76274 Reviewed-on: https://chromium-review.googlesource.com/c/1402061 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 4f3b207d 2019-01-01T14:48:25 Vulkan: Shader path for texture-to-texture copy This change implements glCopy[Sub]TextureCHROMIUM in GPU. As with the previous change implementing glCopyTex[Sub]Image2D, it currently only selects the shader path if the texture is already defined. Bug: angleproject:2958 Change-Id: Ia1b5625f92e6c9f91807c9b601e5c34d2d5e5c30 Reviewed-on: https://chromium-review.googlesource.com/c/1392394 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 29b49417 2019-01-07T14:03:06 Make copy texture test more extensive By doing the copy multiple times, we exercise both paths where the destination is already initialized and when it's not. This adds tests for all combinations of formats and flags. Bug: angleproject:2958 Change-Id: I56afb44496acd1b4d5a8527f4dbee29afbac9c81 Reviewed-on: https://chromium-review.googlesource.com/c/1398643 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 988d9a06 2019-01-08T09:38:29 Use win-angle-rel on the ANGLE CQ. The new test suite doesn't run several Chromium tests. See https://crrev.com/c/1398562 for reference. Also sorts the CQ testers alphabetically. Bug: chromium:822310 Change-Id: I5f4006e6f027a4666e9ccc5e5bcf981b3b979429 Reviewed-on: https://chromium-review.googlesource.com/c/1400861 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kimmo Kinnunen 6344d8ea 2019-01-02T13:23:21 Fix a crash on checking NVIDIA driver version with incorrect X11 DISPLAY Check if the display was valid (non-null Display pointer) before querying NVCTRL X11 extension. Bug: 840249 Change-Id: I299f87e2eb150d56649dd71c7becbe8f8abf7841 Reviewed-on: https://chromium-review.googlesource.com/c/1392906 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>