src/libANGLE/renderer


Log

Author Commit Date CI Message
Shahbaz Youssefi 02ad19e3 2022-02-07T13:46:46 Vulkan: Fix vkCmdResolveImage offsets glBlitFramebuffer takes identical regions for src and dst when resolving. vkCmdResolveImage should use the clipped area instead of using the actual offsets passed to this function. Bug: chromium:1292537 Change-Id: I13b91a4e14bdb3fcbf8f01edb36d7fb4110429ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3444340 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9fcebb8 2022-02-07T14:11:58 Vulkan: Make framebuffer fetch syncval errors more specific The errors are very generic, so now they are only suppressed if framebuffer fetch is used by the application. This change partially relands 2eeb87488. Bug: angleproject:6951 Change-Id: I55f444d19360d3066f1d4b0959d25e676dbb1a38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3444341 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 9208dcc6 2022-02-07T18:23:12 Revert "Vulkan: Enable framebuffer fetch on SwiftShader" This reverts commit 2eeb8748867c529474200d302f21f20ab461b9b4. Reason for revert: Breaks tests for ANGLE-to-Chromium autoroller Original change's description: > Vulkan: Enable framebuffer fetch on SwiftShader > > Bug: angleproject:6951 > Change-Id: I10eeb58be9e8639c0519fc47f327a0894155b755 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3437409 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:6951 Change-Id: I35eaf2b7411d1bf055484bbb32f7e681286edd42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3442370 Reviewed-by: Ian Elliott <ianelliott@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 959d4be5 2022-02-03T08:03:14 Vulkan: Remove buffer get method from descriptors desc. This will make a future refactor to use a common desc class easier to implement. We have the necessary buffer already in the call context so we can instead pass this buffer down to where it gets used. Bug: angleproject:6776 Change-Id: Ia9782cba9f91c9604b1e937252bb293a346d025c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3436766 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya f65e7c3c 2022-02-02T14:23:31 Vulkan: Take base level into account in image views Similarly to how max level changes are handled, this change also handles base level changes. In either case, the old views are retained and new views are created for the [base, max] level range. Test provided by m.maiya@samsung.com Bug: angleproject:6967 Test: MipmapTestES31.UpdateBaseLevel/* Change-Id: Iee8b2f035c1cc0fa916b987a91939b8ae65d27c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3441074 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@google.com>
Alexey Knyazev 6d30de10 2022-02-05T02:25:36 Metal: Fix ANGLEUniformBlock alignment To pass Metal validation, the length of ANGLEUniformBlock structure must be aligned to 16 bytes. Bug: angleproject:5505 Change-Id: I1e2becaac48739966afb44e087fc4a70f7b21d02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3440067 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Antonio Caggiano ac20272f 2022-01-19T17:13:50 Vulkan: Fix present region rectangles EGL rectangles are specified relative to the bottom-left of the surface, while Vulkan framebuffer space puts the origin on the top-left corner. Bug: angleproject:6933 Change-Id: Ia57eea8601ee724c0a82eb718d831de6b7566472 Reviewed-by: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3423770 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2eeb8748 2022-02-03T13:10:54 Vulkan: Enable framebuffer fetch on SwiftShader Bug: angleproject:6951 Change-Id: I10eeb58be9e8639c0519fc47f327a0894155b755 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3437409 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang 706f8a31 2022-02-04T04:22:10 Support gl internal format for creating EGLImage from VkImage Bug: chromium:1290638 Change-Id: I5c9815b727497f63b9f04ecbd8c27deef4b929c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3438666 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Jamie Madill 7820ca23 2022-02-02T09:34:07 Vulkan: Binding available buffer range to descriptor. This is fully conformant with GLES including robustness, where robustness specifically allows returning any values in the buffer. The goal is to eventually remove all shader-variable-specific info out of the descriptor set update. This will let us fix cache bugs that pop up when we move the descriptor set cache to the share group. Bug: angleproject:6776 Change-Id: Iccef33ca6174a68e359a07dc957a276b2484f97f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3431725 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 1608a956 2022-02-02T13:54:53 Vulkan: Revert client vertex data streaming to use DynamicBuffer In early CL crrev.com/c/3352489, I switched client vertex data streaming from using DynamicBuffer to sub-allocating from the buffer pool. That caused CPU overhead regression due to extra cost of handling the suballocation object creating and garbage collection etc. Even after all other optimizations I did since then that significantly improved garbage collection performance, there is still 6% CPU time regression as measured with gardenscape. This CL moves StreamVertexData() back to use DynamicBuffer. In order to do that, I have cleaned up DynamicBuffer interface to be consistent with suballocation interface by storing the current allocated offset/size in the suballocation object. With that, the BufferHelper object that returned from DynamicBuffer will be able to pass around and referenced exactly like it comes from suballocation code path, and you can retrieve offset/size from that BufferHelper object instead of having to pass offset around between various function calls. Given that streaming vertex data from client memory is only possible for default vertex array and there is only one default vertex array for each context, this stream vertex data dynamic buffer is essentially a per context object. So the other change I made here is that I have merged mDynamicVertexData with default attribute (which uses per context dynamic buffers) code to use the same sets of dynamic buffers, since you will only use one or the other but not both. Bug: b/205337962 Change-Id: I0ceca5b854069f00afdb9544ee86953b9b773821 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3434645 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 3dbba51d 2022-01-28T16:47:19 Reland "Vulkan: Enable ANGLE_texture_multisample" This is a reland of fe56532f503c9a6acde95f7573d705468102faff Fixed to include suppression of trace tests that were failing. Original change's description: > Vulkan: Enable ANGLE_texture_multisample > > Bug: angleproject:3565 > Change-Id: Ic9556d25608a67540f7eee8841e54dc11773ca22 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424664 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:3565 Change-Id: I9b95ce0823b0ee8cd82c8933f0d4c68bb044dda9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3437525 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop e56f0e29 2022-01-26T19:46:01 Vulkan: Check program fetch status when switching framebuffers Before this patch, we only checked whether to update the framebuffer fetch status when the program changes. We also need to check when the framebuffer itself changes. Test: FramebufferFetchES31.FramebufferMixedFetchTest Bug: angleproject:6893 Change-Id: I92ff1f30dfb3f17aee362e5931fc4c94d18142ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3418842 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Kenneth Russell 812d5fff 2022-01-31T17:32:47 Metal: End the current render pass at glInvalidateFramebuffer. Prior to this, glInvalidateFramebuffer calls were discarding the effects of draw calls made afterward, in the same render pass. Add StateChangeTestWebGL2.InvalidateThenDrawFBO reproducing the basic problem reported, and document the variations attempted. Minimal code was changed to fix this issue because other changes hypothesized as necessary weren't testable. Drive-by cleanup of FragDepthTest, after which StateChangeTestWebGL2 was patterned. Bug: angleproject:6923 Change-Id: If79805dbf62fae76b7b9147940b5d9d301142baa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3426828 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Gregg Tavares <gman@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cody Northrop 7d7cca47 2022-01-17T18:00:25 Vulkan: Update default FBO when fetch in use If the fetch mode of the default framebuffer changes, lazily create and use a new set of framebuffers (one per swapchain image) that are setup for fetch (i.e. have a matching renderpass). Test: FramebufferFetchES31.DefaultFramebufferTest Test: FramebufferFetchES31.DefaultFramebufferMixedProgramsTest Bug: angleproject:6893 Change-Id: Iff2b73d7c34b9b8ca9429c3f24aa700c2746cc81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3401933 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuly Novikov 139f4bd4 2022-02-02T23:17:04 Revert "Vulkan: Enable ANGLE_texture_multisample" This reverts commit fe56532f503c9a6acde95f7573d705468102faff. Reason for revert: breaks win-trace trybot https://ci.chromium.org/ui/p/angle/builders/ci/win-trace/764/overview Original change's description: > Vulkan: Enable ANGLE_texture_multisample > > Bug: angleproject:3565 > Change-Id: Ic9556d25608a67540f7eee8841e54dc11773ca22 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424664 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:3565 Change-Id: Ia278894260b9e714542a8944cb132005c3700ddb No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3434285 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev 49488710 2022-02-02T14:57:04 Metal: Remove emulatedInstanceID The uniform variable is no longer referenced. Bug: angleproject:5505 Change-Id: I8de518592e045707d024eaa1c07999caf4b5da66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3431079 Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi fe56532f 2022-01-28T16:47:19 Vulkan: Enable ANGLE_texture_multisample Bug: angleproject:3565 Change-Id: Ic9556d25608a67540f7eee8841e54dc11773ca22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424664 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao bc3be5a8 2022-01-27T12:12:58 Vulkan: Add a dedicated suballocation garbage list Suballocations are the most common garbage objects in most usage cases. The current garbage collection code will construct a garbage object from suballocation and then construct a SharedGarbage object with a std::vector that holds only one element. And then it adds this SharedGarbage to the garbage list. This CL tries to avoid create std::vector with just one element and avoid the cost of switch statement for each garbage object by adding a new dedicated garbage list that only holds the suballocation garbages, which is the most common garbages in the system. With gardenscapes running offscreen with --minimum-gpu-work, it reduces CPU overhead from 2.55ms to 2.20ms on Pixel6. Bug: b/215768827 Change-Id: Ia2872442462917c0caadb263769a1cbf3dd7366f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414356 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill be2da234 2022-01-30T13:59:21 Vulkan: Initialize exectuable with invalid uniform serial. Instead of reserving valid serials from the range of device serials, we can instead use an invalid serial. We can remove the extra check for valid this adds if it becomes a hotspot later. Bug: angleproject:6776 Change-Id: I81a36be503d6464ddc5dbb0e9df907f09dda9182 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3426883 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 33427a4b 2022-01-31T12:07:43 Vulkan: Fix vkCmdResolveImage extents The source framebuffer's extents were accidentally used instead of the blit area extents. Bug: chromium:1288020 Change-Id: Ib723db50d9687fee0453d027141a94ea26d8a4b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427561 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 293c0b51 2022-01-21T15:53:38 Vulkan: Cache commonly used 6 ushorts stream index array data Looking at all app traces that we currently have, 16 out of 100 apps are making glDrawElements calls without element buffer. And among these usages, most of them are calling glDrawElements with 6 unsigned shorts, which makes sense for drawing a quad. This CL caches first four BufferHelper objects with 6 uint16_t indices in a buffer and reuse them if the data matches. With this we avoid create/destroy suballocations, we even save the time of data copy and set DIRTY_BIT_INDEX_BUFFER when called with same set of indices, which is the case for almost all apps that uses glDrawElements based on app traces research. In order to test the effect, I modified the `--minimize-gpu-work` to keep glDrawElements calls with (count=6, tye=ushort) to pass down count/type into angle, and only change the mode to point. That way this new optimization will gets activated with `--minimze-gpu-work` command line option (see crrev.com/c/3421377). With that, this CL sees cpu overhead reduced from 2.54ms to 2.37ms on Pixel6 with vulkan_offscreen_gardenscape. Bug: b/215768827 Change-Id: I9b682868978e3bef7b5b9d1a596500ead2738d3e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3404677 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Brandon Schade 38fada35 2022-01-27T18:16:18 Vulkan: Add support for OES_primitive_bounding_box Add OES version of the primitive bound box extension Bug: angleproject:3576 Test: dEQP-GLES31.functional.primitive_bounding_box.* Change-Id: Ie44d952992a68dfffd5c124dda8dd11069f0c1e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3425086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Jamie Madill 945a09d1 2022-01-30T13:57:32 Vulkan: Fix off-by-one in DynamicBuffer. allocateFromCurrentBuffer was using >= when it should have been using >. This prevented filling a buffer to the exact maximum. Bug: angleproject:6776 Change-Id: I9656e398080381f97d06912ff10fe62e7e7333ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3426882 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 868c0739 2022-01-29T13:59:30 Vulkan: Fix image base/max level respecification case. Bug: angleproject:6776 Change-Id: I3e7774c20bae6d7ad7b1775d46797104e2429b81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3426208 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 508a8a02 2022-01-31T15:12:55 Remove old spellings for SYNC-HAZARD-WRITE_AFTER_READ skips Obsoleted by VVL roll crrev.com/c/3426000 Bug: chromium:1292106 Change-Id: I360dea6f97e75a25245597e96553aa86d655c340 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3428099 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 2d3ce72d 2022-01-20T10:13:06 Refactor shared library load to avoid allocations. Fixes a leak of an angle::Library detected in the EGL loader. Bug: angleproject:6937 Change-Id: I623aa6172b98a35465e1d2641b92f67bdc5d24e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3403060 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 665ddccd 2021-12-09T23:06:39 Vulkan: Emulate dithering Dithering in OpenGL is vaguely defined, to the extent that no dithering is also a valid dithering algorithm. Dithering is enabled by default, but emulating it has a non-negligible cost. Similarly to some other GLES drivers, ANGLE enables dithering only on low-bit formats where visual banding is particularly common; namely RGBA4444, RGBA5551 and RGB565. Dithering is emulated in the fragment shader and is controlled by a spec constant. Every 2 bits of the spec constant correspond to one attachment, with the value indicating: - 00: No dithering - 01: Dither for RGBA4444 - 10: Dither for RGBA5551 - 11: Dither for RGB565 The translator appends code to the shader that, based on the format specified by the specialization constant, adds dithering to each color attachment output. A 2x2 Bayer matrix is used for dithering, indexed by gl_FragCoord.xy % 2. Bug: angleproject:6755 Change-Id: Ib45da5938e299b6626bff921119d63e7357dd353 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3374261 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 471f1852 2022-01-31T11:22:49 D3D11: Fix underflow with computing small strides. When an attribute stride was less than the size of a vertex element, and the D3D11 back-end emulates this vertex format, our vertex streaming logic could decide that an unsigned int underflow means our element count in a buffer is not computable and return zero. Fix this bug by using signed integers in the element conversion. Bug: angleproject:6958 Change-Id: Ibd9a3599d780e953d492db739c7443662c7e6b82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427559 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 55ef2b4f 2022-01-28T23:24:49 Update one more SYNC-HAZARD-WRITE_AFTER_READ skip vkCmdCopyImageToBuffer() was changed to vkCmdCopyImageToBuffer in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3705 Skip both variants for now, the old one to be removed after a VVL roll. Bug: chromium:1292106 Change-Id: I8c1a6be7bcf829c9a8b848c5ef2362462a965a11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424667 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 168e0ae5 2022-01-27T16:50:00 Vulkan: Refactor descriptor pool code. This uses vk::Context to init DynamicDescriptorPool, and removes some accesses to ProgramExecutableVk member variables so the methods can more easily be moved into another class. The changes should have no effective behaviour difference. Note that the immutable sampler descriptor count is entirely set by the format of the immutable samplers. However we can't determine this count by looking at the descriptor set layout desc with the current implementation. Bug: angleproject:6776 Change-Id: I0a323d19fa3720b5afd8300401ed9c30b105c0ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424657 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov a994ea99 2022-01-28T17:52:16 Update SYNC-HAZARD-WRITE_AFTER_READ skip VK_PIPELINE_STAGE_2_NONE_KHR was renamed to VK_PIPELINE_STAGE_2_NONE in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3705 Skip both variants for now, KHR to be removed after a VVL roll. Bug: chromium:1292106 Change-Id: Ie8d095eccedc526880edf7d3601fa0aca23c1498 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424665 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jeff Vigil e03f1753 2022-01-06T09:48:12 EGL: mutable_render_buffer deferredFlush fix When in SINGLE_BUFFER mode, need to get around deferredFlush and call Swapbuffers to force update This must do status check for OUT_OF_DATE. Bug: angleproject:6878 Change-Id: I34b7381f6799879bf6f6d490aba02feffc5c3748 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373739 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
sugoi1 8a1f8af4 2022-01-28T10:51:47 Turn on the Vulkan backend on ChromeOS ChromeOS needs to switch from testing on legacy SwiftShader GL to testing on SwANGLE instead. This CL allows ANGLE's Vulkan backend to exist on ChromeOS. Bug: chromium:1225003 Change-Id: I7bf702ce18857707226461152b560a570797fce0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424658 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Lubosz Sarnecki 42c8b29d 2022-01-05T13:35:23 Tests: Add Dead By Daylight trace. Add GL_EXT_shader_framebuffer_fetch prerequisite. Ignore SYNC-HAZARD-READ_AFTER_WRITE validation error in RendererVk. Test: angle_perftests --gtest_filter="*dead_by_daylight*" Bug: angleproject:6870 Change-Id: I01f53ff8d26b704b75afe8c02ac12777b51fd5de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3372793 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Kyle Piddington c4a9d416 2022-01-05T15:28:11 Metal: Refactor to build without SPIR-V Refactor ShaderInterfaceInfoMap and constant names to thier own files, allowing Webkit to build without needing to compile SPIRV code via mtl_glslang_utils.cpp. Bug: angleproject:6782 Change-Id: I7a9c7e387145c95807f780e24bd2764e0efb5709 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3364970 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Charlie Lao 701d51b1 2022-01-25T15:44:39 Vulkan: Add SmallBufferPool for small allocations The small pool uses buddy algorithm that is much faster. The only downside is that it rounds size to power of two. For small allocations that rounding does not generate much waste and avoid fragmentation as well. This CL adds a small pool for host visible non-coherent pool. My testing with gardenscape shows that on top of other CLs, this reduces CPU overhead from 1.77ms to 1.55ms as measured with --minimize-gpu-work with offscreen. Bug: b/215768827 Change-Id: I68434931f238c4e980b77d3df46d762260ef1db5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3415211 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao df19e35a 2022-01-24T17:47:58 Vulkan: Use queue for mGarbageQueue This variable is also acting exactly like queue as the name implies. This CL changes from vector to queue so that the very last erase() call will not actually move anything. Bug: b/215768827 Change-Id: Ieb39c3a1b3acb25f93bcda2a46737a6d009d71f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414355 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill 4e644b33 2022-01-22T16:17:46 Vulkan: Remove ProgramExecutableVk back-pointers. This removes the mProgram and mProgramPipeline back-pointers from ProgramExecutableVk. In order to fix this, we needed to refactor the VkPipeline init functions to call through ProgramExecutableVk only instead of passing through ProgramVk. We also needed to move the early fragment shader optimization boolean out from Program. This CL also fixes a few places where the early fragment test optimization boolean wasn't properly updated. Bug: angleproject:3570 Change-Id: Ie4c48087f6eb022e6f0a4dacc2710085165d49e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3408267 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Patrick To b3ed4780 2021-12-21T17:20:19 Change Windows display initialization from ANSI to wide version Bug: angleproject:6846 Change-Id: I2aee8f4b5b7546fc707705e435251fa9861e27d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352866 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 602b957b 2022-01-26T15:01:21 Enable robustnessEXT for SwiftShader. This is a reland of commit b803b60df1806f189c1b29ca77da47896241e0f1. The issue with webgl-oversized-printing.html crashes is supposed to be resolved by commit b1216bf1759ab23ffe2d6b6727f9ec10ddfa4d0f Failing test angle-instanced-arrays-out-of-bounds.html disabled by commit d235e032000d611d31e6fd8a8190e4425b4c0ecb I don't think we need to change the test expectations any more as that swiftshader issue is supposed to be already fixed http://anglebug.com/6906#c4 Bug: chromium:1287631 Bug: angleproject:6922 Change-Id: I0fdf806cac51d000088a029bbb3070906453dfb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3415875 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 2ad5f350 2022-01-25T12:15:16 Vulkan: Fix texture array level redefinition When a level of a texture is redefined, all staged updates to that level should be removed, not the ones specific to the new layers. The bug fixed was that if the texture was redefined to have its number of layers changed, the staged higher-layer-count update to the image was not removed. Bug: chromium:1289383 Change-Id: I9b90025f78af80ab19a280f90b58510716da31d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3413004 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
John Cunningham 45237a04 2022-01-11T00:14:01 Metal: Fix undefined behavior of depth write Writing to an unbound depth attachment is undefined behavior in Metal. Fix this by emitting a function constant to guard depth buffer use in fragment shaders. Bug: angleproject:6865 Change-Id: Id7c10d0aeb349aacfe09c397bc292a71199ab50a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3380304 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Charlie Lao a7970889 2022-01-24T11:50:27 Vulkan: Use queue instead of vector for mSharedGarbageList The garbage collector code is iterating the mSharedGarbageList from begin to end and if the garbage object is completed, we destroy it and erase it from the vector. This is done one by one. The problem with that is each erase call end up moving the remaining vector to ahead by one, and this process is repeated for each completed element. This is O(N^2) problem and really magnifies when you have many garbage objects. Since we only add garbage when it is GPU pending, so most of these garbages are in sort of fifo order anyway. This CL changes the garbage list from vector to queue so that erase becomes pop and this becomes a O(N) problem. This reduces CPU overhead as measured with minimize-gpu-work for gardenscapes from 10ms to 2ms due to suballocation generates lots of garbages. But this CL is a general improvement for the garbage collection performance. Bug: b/215768827 Change-Id: I002aadf75f958d8b79eb6281a2608597776e908d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414354 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 39f66a9c 2021-12-16T23:26:00 Vulkan: Support different SCBs for outside and inside RP The render pass command buffers are generally much larger than outside render pass command buffers, and their allocation sizes and frequencies differ. This change allows choosing between ANGLE and Vulkan secondary CBs independently for outside and inside render pass commands, as part of an investigation to understand which implementation performs best for each. Switching to Vulkan secondary command buffers is still slower. In the ball park, switching outside render pass SCBs doesn't seem to make much difference, while switching render pass SCBs duplicates the frame's CPU time. Bug: angleproject:6811 Change-Id: Ia8455fd19897a0eaeadf3d6db29286ea53df1f5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3346341 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill cb96c236 2022-01-26T18:53:55 Revert "Vulkan: Enable framebuffer fetch on SwiftShader." This reverts commit 5107231939b5e04d3d5e4376176db42c3ae60193. Reason for revert: Fails new code paths in Chrome+Skia. Bug: angleproject:6947 Original change's description: > Vulkan: Enable framebuffer fetch on SwiftShader. > > This also fixes a bug with non-coherent fetch in the symbol table. > > Bug: angleproject:6947 > Bug: angleproject:6948 > Change-Id: I190b2e0cddf1bc1b53a79079d3e2f79ccbb40d15 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3412998 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6947 Bug: angleproject:6948 Change-Id: I8bd6c55598552b733547e45c854f6d55768d2b65 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3417503 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7c1346bd 2022-01-21T11:35:45 Vulkan: Consolidate uniforms code in ProgramExecutableVk. De-duplicates several methods. Refactoring change only. Bug: angleproject:3570 Change-Id: Ib68bc30b3e9b1087871bb268ea292677e0c9fe2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3408061 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0dc0dc2a 2021-12-30T11:35:40 Re-land: "Vulkan: Remove "fillProgramStateMap"." This copies additional shader info like uniforms from the Program to the Program Piplines. There is now a duplication between PPOs and Programs. There is no additional storage required for non-PPO Programs. Re-land fixes fragment in/out uniform updating with PPOs. Bug: angleproject:3570 Change-Id: I64b2db6fbc3a610f3b5e617301f94eb30d915939 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3412999 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 51072319 2022-01-25T10:41:25 Vulkan: Enable framebuffer fetch on SwiftShader. This also fixes a bug with non-coherent fetch in the symbol table. Bug: angleproject:6947 Bug: angleproject:6948 Change-Id: I190b2e0cddf1bc1b53a79079d3e2f79ccbb40d15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3412998 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Roman Lavrov 5f0badf4 2022-01-18T20:05:55 Vulkan: Prevent out of bounds read in divisor emulation path. Split the replicated part of StreamVertexData out to StreamVertexDataWithDivisor, there is only a partial argument overlap between the two. Bug: chromium:1285885 Change-Id: Ibf6ab3efc6b12b430b1d391c6ae61bd9668b4407 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3398816 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Jeff Vigil d6dd0cb5 2021-09-21T15:26:13 EGL: EGL_KHR_lock_surface3 backend Add vulkan implementation Add test: EGLLockSurface3Test Test: angle_end2end_test --gtest_filter=EGLLockSurface3Test Bug: angleproject:6062 Change-Id: Id5bfe37895b550392d11e9e9cc1262c1f0288c42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3174323 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 6a14e328 2022-01-25T00:49:45 Revert "Vulkan: Remove "fillProgramStateMap"." This reverts commit 38deffe40db83836588e0cd50864945a9ddba36b. Reason for revert: angle_end2end_tests failures on Pixel 6. Original change's description: > Vulkan: Remove "fillProgramStateMap". > > This copies additional shader info like uniforms from the Program > to the Program Piplines. There is now a duplication between PPOs > and Programs. There is no additional storage required for non-PPO > Programs. > > Bug: angleproject:3570 > Change-Id: I5ed6c946df945aaf2f65752f797b16e7649d5584 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3362297 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Tim Van Patten <timvp@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:3570 Change-Id: I3a4822c8a65d024070a9fe5df103b88a3c8333d3 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414024 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 29678329 2022-01-21T14:06:42 Vulkan: Fix advertised precision ranges Advertise precision ranges similar to the spec requirements. This change requires a fix to the CTS to allow drivers to provide more precision in some situations: 97ceb2222747fef380d25acd15638b599fbc1d5a in VK-GL-CTS Bug: angleproject:6645 Change-Id: I9b537a8acdf885e35fbcb539c70b730c5f2accc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3407737 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 38deffe4 2021-12-30T11:35:40 Vulkan: Remove "fillProgramStateMap". This copies additional shader info like uniforms from the Program to the Program Piplines. There is now a duplication between PPOs and Programs. There is no additional storage required for non-PPO Programs. Bug: angleproject:3570 Change-Id: I5ed6c946df945aaf2f65752f797b16e7649d5584 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3362297 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev a20cd8b7 2022-01-22T01:40:34 Fix initialization for ETC2 punchthrough alpha formats * Zero-filled ETC2_A1 data must be treated as opaque black * Removed init functions when emulation is not needed * Fixed initialization for emulated ETC2_R8G8B8A1_SRGB_BLOCK Bug: angleproject:6936 Bug: angleproject:6941 Change-Id: Ie5555bbaa6b1a2bcfd9c22cb9c17d1a96e72aa70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3406761 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mohan Maiya 096c268b 2022-01-12T15:21:02 Add a few overrides for Samsung 1. Enable perFrameWindowSizeQuery feature 2. Return correct vendor string Bug: angleproject:5111 Change-Id: I9efb0d2168994c6f209d8730c658f2568f3d3afa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3387848 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev ca3b28b4 2022-01-21T14:59:47 Metal: Fix compressed texture initialization and add DXT1 test There was a divergence between WebKit and upstream ANGLE in InitializeTextureContents' handling of compressed textures. Align upstream ANGLE with WebKit, fix a problem with emulated compressed texture formats like ETC2, and add a new test: DXT1CompressedTextureTestWebGL2.InitializeTextureContents Bug: chromium:1289428 Change-Id: Ieac6b99a4b19a34d0d87b7577882760ea395c605 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3406746 Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Mohan Maiya a0fbcb37 2022-01-13T14:26:58 Vulkan: Remove flush from SyncHelperNativeFence::serverWait The spec doesn't require a flush in native fence's server wait method Bug: angleproject:2517 Test: EGLSyncTest.AndroidNativeFence_* Change-Id: If6870fe1e25ddf3a1b724e776f5408523a7bdf50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388231 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Brandon Schade a5e22715 2021-09-30T17:03:34 Vulkan: Fixed TC shader and gl_PerVertex block interaction TransformSpirV() does not account for the fact that the tessellation control shader's output gl_PerVertex block is a named array. This results in the input and output blocks being sometimes flipped. Added code to track the IdRef of both input and output array gl_PerVertex blocks and swap them if necessary. Bug: angleproject:5557 Tests: KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.data_pass_through Change-Id: Ie3823701b4eaa53daa8ca34faab657f54d8aee38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208513 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Charlie Lao d2354968 2022-01-20T10:59:05 Vulkan: Rename BufferHelper::initFor* to allocateFor* Simply name change per feedback from other CL's review. Bug: b/205337962 Change-Id: Ieb53ed9a2922d09716a1219eb340fe273e5f1807 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3402882 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao a83f7e91 2022-01-19T14:14:16 Vulkan: inline some of the BufferSuballocation APIs These are simply get* calls and frequent used ones. The measurement I have on Pixel6 shows there is 0.01ms out of 2.28ms on CPU overhead with asphalt_8 app trace measured with --minimize-gpu-work. Bug: b/205337962 Change-Id: I746a1ccc67c589d1aba25495601ad874ddc034a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3403159 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 1b5efe51 2022-01-19T14:04:35 Vulkan: Rename SubAllocation to Suballocation Simply a name change to make it one word. No functional change is expected. Bug: b/205337962 Change-Id: Ic505536821f18141c0d036b13d9aa81554a8bafd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3403158 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev 659725aa 2022-01-20T15:24:40 Metal: Cleanup texture caps init The removed line is redundant as the ASTC texture support is enabled during the setTextureExtensionSupport call. Bug: angleproject:6874 Change-Id: Ib9016e4d40acf1f466fa10920384b7419e6fed49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3404100 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Kyle Piddington 1bd1a3db 2022-01-06T15:08:48 Metal: Canvas resizing causes webpage to run out of memory For https://bugs.webkit.org/show_bug.cgi?id=232122 Introduce a maximum resident amount of memory that a single command buffer can use, before forcing a flush. As part of ensuring that a command buffer is ready, check to see if this limit is exceeded. if so, flush the command buffer, and create a new one. Bug: angleproject:6880 Change-Id: I5e89735d05adbc174237ab79b006a75bbe89e560 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3369922 Reviewed-by: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Charlie Lao 15439f8e 2022-01-13T14:58:41 Vulkan: Remove BufferMemoryAllocator This class was added in crrev.com/c/3036256. The original intention was to use VMA to implement buffer suballocation. Because VMA itself does not support buffer suballocation, I was thinking to use VMA custom pool to implement it and this class was intended to wrap all these functionality into one class. But now thanks to Jamie's effort, VMA exported generic suballocation algorithm via API and we have implemented buffer suballocation using that virtual allocation API. So this BufferMemoryAllocator class is really no longer useful. This CL mostly reverted that CL and flatten out the buffer allocation call to directly use VMA's Allocator object. Bug: b/205337962 Change-Id: I0336056e440f39e2ff49fee8e0ff4b1f355cefe4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3244022 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov dcac02ac 2022-01-19T21:30:21 Revert "Enable robustnessEXT for SwiftShader." This reverts commit b803b60df1806f189c1b29ca77da47896241e0f1. Reason for revert: blocks roll into Chrome - anglebug.com/6922 Original change's description: > Enable robustnessEXT for SwiftShader. > > Bug: chromium:1287631 > Bug: angleproject:6906 > Change-Id: I3c8c32561a1ac7860c83b8d3ba22aafd0bf81fd4 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3390489 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Roman Lavrov <romanl@google.com> Bug: chromium:1287631 Bug: angleproject:6906, angleproject:6922 Change-Id: Ic8ff7dd996455009037cbff9e10b6fbbc420b37e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3402820 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Cody Northrop b5360798 2022-01-14T12:45:14 Vulkan: Support fetching from default FBO If GL_EXT_shader_framebuffer_fetch is enabled, specify framebuffer attachments as having VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT. Add new test FramebufferFetchES31.DefaultFramebufferTest which exercises the behavior. Also limit exposure of either framebuffer fetch extension to be Android only due to swapchain images requiring INPUT_ATTACHMENT. Test: FramebufferFetchES31.DefaultFramebufferTest Bug: angleproject:6893 Change-Id: I227e36a9844e2301f0fe0602f4e4d905874b32e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3389791 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
James Price fc6b747d 2022-01-10T17:01:30 EGL: Fallback to native device if no display available On some Google-internal platforms, eglGetDisplay() fails. The EXT_device_enumeration extension is the recommended way to initialize an EGL display on these platforms. Bug: chromium:1276086 Change-Id: I68969c19d643a46e8362ae265b1115b18ca3bbc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3378824 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 55d12770 2022-01-19T16:00:47 Metal: Cleanup autogenerated format table Skip generating code that sets default values. Bug: angleproject:6874 Change-Id: Id12e39eedbe4665279710125e02b105318d40b82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3399836 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Kyle Piddington 00a2a2f3 2022-01-06T17:52:23 Merge metal format table updates from Webkit Some texture formats are not supported in the Metal SDK for certain platforms. Refactor the mtl_format_table map to allow Webkit to continue to build all platforms. This change removes a large block of changes between Webkit and OSS ANGLE, due to resolving the generated file differences. Bug: angleproject:6874 Change-Id: Ib53aea4fb95e230d53ad2ebbd74bf97e847005c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3371882 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Cody Northrop fa3241b7 2022-01-13T17:56:52 Vulkan: Move shader_framebuffer_fetch to FeaturesVk Per feedback in http://crrev/c/3371244, move the new and existing checks for whether the extension should be enabled. Controlling them based on hardware vendor should be done with FeaturesVK so we can centralize our workarounds. Also remove the envvar-based override for non-coherent extension. It can now be forced using ANGLE's feature system. The new way to force the override is: ANGLE_FEATURE_OVERRIDES_ENABLED=supportsShaderFramebufferFetchNonCoherent or on Android: debug.angle.feature_overrides_enabled=supportsShaderFramebufferFetchNonCoherent Bug: b/201764768 Bug: angleproject:6519 Bug: angleproject:6870 Bug: angleproject:6872 Change-Id: Ie78ebfa94807a156b9e7f704e8a36cd38b85f878 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3389707 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jonah Ryan-Davis 9012c128 2022-01-17T13:30:28 Add Microsoft vendor Id parsing to SystemInfo "Microsoft Basic Render Driver" uses vendor Id 0x1414. Bug: angleproject:6904 Change-Id: I50e370159f176a8e591eda96134e59ad89e09c5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3396417 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jonah Ryan-Davis 453cd955 2022-01-17T13:26:39 Add EGL_ANGLE_platform_angle_display_id to D3D11 backend. Uses the same LUID parts as ANGLE_platform_angle_d3d_luid. This new extension is available on D3D11 on Windows and Metal on Mac. Bug: angleproject:6903 Change-Id: Ib695affe47e822c4dfd7f41d8a62a85e74b9b90a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3396416 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Roman Lavrov b803b60d 2022-01-14T23:29:14 Enable robustnessEXT for SwiftShader. Bug: chromium:1287631 Bug: angleproject:6906 Change-Id: I3c8c32561a1ac7860c83b8d3ba22aafd0bf81fd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3390489 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Maksim Sisov 4572a176 2022-01-03T13:29:59 Add support for GL_MESA_framebuffer_flip_y 3/* This is a third CL that adds tests that exercise the extension in various use cases. Bug: chromium:1231934 Change-Id: Iae3192cd0985150b6844a2855a9a048a54353655 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3365195 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Maksim Sisov <msisov@igalia.com>
SeongHwan Park 9b231f09 2022-01-18T04:49:08 Vulkan: Fix incorrect bit test when mipmapping Fixed an issue where angle::Bit was used instead of angle::BitMask when should selecting [0, x) to set bit range (x, y] in an n-bit bitmask. Bug: chromium:1287962 Change-Id: I053fbc836ef12b0dfd30305fd527de3fabfdf525 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3394468 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 158ecba6 2022-01-07T16:40:26 Vulkan: Remove cached Impl pointers from ContextVk. These pointers were a common source of programming error, where sometimes they wouldn't be updated when they were needed. Instead we can pull the objects directly from the GLES state. We added them initially to attempt a performance improvement, but it's likely they didn't significantly decrease memory accesses or the number of instructions we process for GLES calls. Hence removing them should be an improvement in safety without a perf loss. Bug: angleproject:6864 Change-Id: I54107686992065a514077c71d173b804e295515e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3378904 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Peng Huang 5adee916 2022-01-11T13:09:55 Wrap some global vulkan methods which depend on env variables ANGLE scoped sets some envion variables during initialization. Those env variables will change some vulkan global methods behavior. So to make sure those global methods have same behavior, this CL wraps those global methods, and sets those envion variables before call those vulkan methods. Bug: chromium:1264439 Change-Id: Ie4e29884fcf5b67f4e53ddd3c90a9ade7b226a1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379209 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Shahbaz Youssefi 6601b8d2 2022-01-14T14:15:24 Vulkan: Fix storage buffer limits on geom/tess without Vulkan support Bug: angleproject:6896 Change-Id: I7172b65b460122fcb2485921fadb360dba199283 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388117 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 30254d34 2022-01-14T12:54:40 Ignore VUID-RuntimeSpirv-NonWritable-06341 warning To facilitate setting up Pixel 6 bot, where it triggers Bug: angleproject:6896 Change-Id: I69241f56a3b26ed932f06563aca700ff77fdb2dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388195 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 158d4783 2022-01-13T13:30:34 Vulkan: Suppress VVL message about allocation exceeding heap size VMA does not check the result of vkGetBufferMemoryRequirements against the heap size before attempting to make an allocation, which leads to a validation error. The error is benign for ANGLE as the subsequent Vulkan allocation will fail, leading to an OOM generated by Vulkan isntead of ANGLE to the same effect as far as the application is concerned. Bug: angleproject:6444 Change-Id: Ia474629971d6835f727b3fb43313a6003e3c939a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3387088 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 6e2ab29d 2022-01-11T22:39:05 Avoid data race in overflow check. `mSerial + 1 > mSerial` involves reading the value multiple times which results in a data race. Bug: angleproject:6633 Change-Id: Iae289ba2ee54190703f16f60319d10988da46cb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3381854 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Tim Van Patten 6312da1a 2022-01-10T14:00:55 Vulkan: Disable GL_KHR_parallel_shader_compile Disable the extension GL_KHR_parallel_shader_compile in the Vulkan backend. Vulkan's shader compiler is very fast and is outweighed by the threading overhead. Additionally, Vulkan doesn't support parallel linking, which is where the real benefit of multithreading lies. Bug: angleproject:6748 Change-Id: I0cd14856865eaaade6bfa40d4bf9f133d613b4d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379302 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Amirali Abdolrashidi 9b1a6d8a 2022-01-06T10:38:25 Vulkan: Invalidate depth/stencil unconditionally * Moved depth/stencil content invalidation during swapImpl() to doDeferredAcquireNextImage(), so it can be done regardless of whether render pass optimization is done. Bug: angleproject:6861 Change-Id: I47fab18afe5b178bf55c2df3df712c40118aff1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3370583 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev f4b0a95f 2021-12-16T02:38:26 Metal: Implement EXT_shader_texture_lod Added CubeMapTextureTest.SampleCoordinateTransformGrad_ES3 Bug: angleproject:6815 Bug: angleproject:6824 Bug: angleproject:3814 Bug: angleproject:6891 Change-Id: I9007bf8ba91309fb9b597e2d1bd33281ff59644a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343488 Reviewed-by: Gregg Tavares <gman@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jonah Ryan-Davis 2f4f5f8a 2021-12-14T17:30:42 Add EGL_ANGLE_platform_angle_device_id for the Metal backend. This extension takes in a 64-bit device ID in two parts as parameters to eglGetPlatformDisplay and uses it to initialize a display backed by a specific device. The deviceID should match the MTLDevice's registryId. Bug: angleproject:6143 Change-Id: I02188b8266f8d0ac657b04325d191ab89bbef751 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3337985 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Peng Huang cd157aae 2022-01-12T14:44:50 Revert "Use STL container for vulkan memory allocator" This reverts commit cc516f97018fdcbcded2b0bad712a0bc2af4e227. Reason for revert: This is not the right way to use STL containers in VMA. See [1] for detail. [1] https://chromium-review.googlesource.com/c/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/+/3381940 Original change's description: > Use STL container for vulkan memory allocator > > There is a crash related to VMA containers, so switch to STL > containers to see if it can workaround the issue. > > Bug: chromium:1266412 > Change-Id: I8416e4b4a27588ac2d710a4ef7600cd91b080535 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3327744 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Peng Huang <penghuang@chromium.org> Bug: chromium:1266412 Change-Id: Ib020c824a3576489c728503a2ced68ca772d4065 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3381979 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Lingfeng Yang 926b43e7 2022-01-06T13:31:54 Reland: Frontend: separate lock in swap prep Swapchain-based backends like Vulkan might block a lot in vkAcquireNextImageKHR, which is bad for overall fast progress if we also hold the global EGL lock there. This CL starts to split the global EGL lock. We release the EGL lock when performing vkAcquireNextImageKHR, and only maintain a lock for surfaces. This is done via a new custom entry point, EGL_PrepareSwapBuffers, so that we can control how the global lock is used throughout the entire call. Bug: angleproject:6851 Change-Id: I095cd8b3bdbb13c842cab0a46148e2122582cdfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373426 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Mohan Maiya 2d105177 2022-01-10T11:44:37 Enable a few features for Samsung Check for Samsung vendorID and enable a few features. Bug: angleproject:5111 Change-Id: I17a93bfb9a094b80d185eb3d2a08ed00f528a30b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379223 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Roman Lavrov 345cdcb0 2022-01-10T22:41:46 Rename features for consistency. supports_custom_border_color -> supportsCustomBorderColor supports_protected_memory -> supportsProtectedMemory Also drop EXT from the end of the variable name as other variables don't have that. Bug: angleproject:6731 Change-Id: I60b20d84387bccbca0c4c1cbc7e341c1f5e8f0ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3378827 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Tim Van Patten b0e15ee4 2021-12-28T20:37:33 Decide GL_KHR_parallel_shader_compile in backends GL_KHR_parallel_shader_compile was previously being enabled unconditionally in the front end. However, some backends (Vulkan) perform worse with parallel shader compilation. This CL moves the decision of enabling GL_KHR_parallel_shader_compile to the backends. To support single-threaded shader compilation without affecting the generic worker thread pool, Context::mSingleThreadPool is added to own the single-threaded WorkerThreadPool and can be returned by the new function Context::getShaderCompileThreadPool(). Otherwise, if the extension is enabled, the (renamed) Context::mMultiThreadPool is returned. Bug: angleproject:6748 Change-Id: Ic8d3a183f397608f3002a05480deb976dfe44792 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3360337 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Yuxin Hu a026d053 2021-12-22T01:08:33 Add support for subgroupSize of 16 in Debug Overlay Module The subgroupSize on some Android devices is 16, which is not supported by current OverlayCull and OverlayDraw compute shaders. This change adds support for subgroupSize of 16. This change also removes the subgroupBallot and subgroupArithmetic paths in OverlayCull compute shader. These two paths were added by Shabi as an experiment, and he suggested to remove them for easier code maintenance purposes. Bug: angleproject:6806 Change-Id: I5ce68cb18fbf3472c987d811c89f065cb8581858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352865 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Gregg Tavares 6a255833 2022-01-07T16:13:58 Metal: Fix transform feedback issue The issue is if you issue 2 draw commands back to back, Metal partially ignores the 2nd. Bug: angleproject:6884 Change-Id: I702335ca06828bed1f553f1f5563ddc99f00bc99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373736 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com> Commit-Queue: Gregg Tavares <gman@chromium.org>
Shahbaz Youssefi 9d11a341 2021-12-16T13:47:04 Vulkan: Fix Vulkan SCB vs multiple subpasses vkCmdNextSubpass must be called on the primary command buffer, so the render pass command buffers need to be split on subpass boundaries. This is only done when using Vulkan secondary command buffers. Bug: angleproject:6811 Change-Id: I087fff305c757c78e87bfde4410e7de6bd1a6ba6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3344774 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi acd8fc76 2021-12-16T01:05:02 Vulkan: Distinguish RP and outside-RP command buffer types What goes inside and outside a render pass command buffer is largely mutually exclusive. Moreover, the size and frequency of allocations is different between the two. This change distinguishes the C++ types used for inside and outside render pass command buffers: - The type now documents which command buffer a function is able to receive. - `isRenderPass` flag passing, checking and asserting is largely removed. - A follow up change experiments with using different (Vulkan vs ANGLE) secondary command buffers for inside and outside RP command buffers. - A future change could specialize the pool behaviors per command buffer type. Bug: angleproject:6811 Change-Id: Ia4bc669d26ac7e94e8a0dfb9b361666c82f42cc3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3344373 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 60a8b593 2022-01-05T11:06:16 Vulkan: Remove std::unique_ptr usage from BufferVk::mBuffer BufferVk::mBuffer is std::unique_ptr mostly because BufferHelper object itself does not support move assignment. Now crrev.com/c/3366855 added move assignment support, we can now use BufferHelper directly. The main downside I can see is that in BufferVk::ghostMappedBuffer() and BufferVk::acquireAndUpdate() functions where we have to use move assignment of mBuffer object, it becomes slightly more expensive than moving pointer. But switch to using BufferHelper directly makes code simpler and other access to mBuffer (which is more common usage) slightly cheaper by removing one pointer indirection. Bug: b/208323792 Change-Id: Ia7e7731e284eb6c76db954fef194e9d1de82174b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3362252 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Cody Northrop ae1a56b6 2022-01-06T17:04:41 Vulkan: Turn on GL_EXT_shader_framebuffer_fetch for ARM On ARM, coherent is the default behavior of framebuffer fetch, so we can expose the GL extension. Tests: Dead By Daylight app and trace Bug: b/201764768 Bug: angleproject:6870 Bug: angleproject:6872 Change-Id: I0f98c57e20619d73d1507c4655e7f9bb8c10a53a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3371244 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 9d668d6c 2022-01-07T18:18:23 Revert "Frontend: separate lock in swap prep" This reverts commit 40c5cb255c0a07bdab574aa076ee603e7d791ab3. Reason for revert: Regression in TSAN caused by this CL: https://ci.chromium.org/ui/p/angle/builders/ci/linux-tsan-test/352/overview Original change's description: > Frontend: separate lock in swap prep > > Swapchain-based backends like Vulkan might block a lot in > vkAcquireNextImageKHR, which is bad for overall fast progress if we also > hold the global EGL lock there. > > This CL starts to split the global EGL lock. We release the EGL lock > when performing vkAcquireNextImageKHR, and only maintain a lock for > surfaces. > > Bug: angleproject:6851 > Change-Id: I329d5c4c579718a4980c4261590f77099ce1400e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3361249 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Lingfeng Yang <lfy@google.com> Bug: angleproject:6851 Change-Id: Ie03b784021f7b8b5c1ef95a911ef7da4029abd46 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373165 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 40c5cb25 2022-01-06T13:31:54 Frontend: separate lock in swap prep Swapchain-based backends like Vulkan might block a lot in vkAcquireNextImageKHR, which is bad for overall fast progress if we also hold the global EGL lock there. This CL starts to split the global EGL lock. We release the EGL lock when performing vkAcquireNextImageKHR, and only maintain a lock for surfaces. Bug: angleproject:6851 Change-Id: I329d5c4c579718a4980c4261590f77099ce1400e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3361249 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Charlie Lao caf6433a 2022-01-04T14:37:29 Vulkan: Rename releaseStagingBuffer to releaseStagedUpdate There is no more per ImageHelper dynamic buffer for staging, and this function is not just removing staging buffer, but removing all staged updates. Rename it to reflect what it actually does. Bug: b/208323792 Change-Id: I5a2182291848a9e137ed29b888f31215664b46fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3367078 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>