src/libANGLE


Log

Author Commit Date CI Message
Shrek Shao 73ec28af 2022-03-23T21:13:45 Revert "Vulkan: Fix invalid access with display texture share group." This reverts commit 1099b5ef2279cfe1988a39c8e011aada59c650f1. Reason for revert: suspect culprit of 1309304 Original change's description: > Vulkan: Fix invalid access with display texture share group. > > Create bufferpool that owns by RendererVk. > If we are using EGL_ANGLE_display_texture_share_group > extension, use the bufferpool owned RendererVk, > otherwise, use the bufferpool owned by EGL::ShareGroup. > The bufferpool lifetime will remain consistent with > texture lifetime. > > Bug: chromium:1299211 > Change-Id: Ie4e87cea1dfd20dabab24e2afed6ddd92e469888 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531155 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: chromium:1299211, 1309304 Change-Id: Ibdc119ef6bb52352858114d72a0f1c0edcd4da5e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3546288 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shrek Shao <shrekshao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuxin Hu 1099b5ef 2022-03-17T17:20:44 Vulkan: Fix invalid access with display texture share group. Create bufferpool that owns by RendererVk. If we are using EGL_ANGLE_display_texture_share_group extension, use the bufferpool owned RendererVk, otherwise, use the bufferpool owned by EGL::ShareGroup. The bufferpool lifetime will remain consistent with texture lifetime. Bug: chromium:1299211 Change-Id: Ie4e87cea1dfd20dabab24e2afed6ddd92e469888 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531155 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 20e7bbb7 2022-03-18T17:03:18 Vulkan: Fix invalidate of attachments with emulated format Some image formats may be emulated such that the emulated format has more channels than the original. ANGLE clears the image once so that these extra channels contain valid values, and carefully ensures they are never modified. For swapchain images with such formats, as they are automatically invalidated at the end of the frame, a workaroud was added to make sure they are re-cleared in the beginning of the next frame. This however doesn't fix the issue of glInvalidateFramebuffer resulting in the contents of attachments with such formats to be discarded (even if the following render pass clears it, the contents are invalid in between). This change instead makes sure invalidate of images with emulated formats that have extra channels are handled appropriately: - On IMR hardware, the invalidate is dropped altogether as it provides little to no benefit. - On TBR hardware, a clear is automatically staged on the invalidated image. The latter replaces the workaround that was added to make the following render pass use loadOp=CLEAR, by adding a clear that's respected regardless of what the future usage is. This change also paves the way for a future change where the invalidate of color attachments is tracked in render passes similarly to how depth/stencil currently is. With this change, the image is no longer in an inconsistent state where its contents are considered invalid, even though some channels are meant to remain valid. Bug: angleproject:6860 Change-Id: Iec5b4854dfbe3a0bf93cd5aa82c19fe116065744 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3536389 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 730c1271 2022-01-07T13:41:08 Vulkan: Submit queue more often for texture data Outside command buffers should be flushed more often in order to prevent the texture data accumulation just before the first render pass when they are referenced. * Added a tracker next to copyBufferToImage() for texture size (in ContextVk). When its value passes kMaxBufferToImageCopySize, the outside command buffer operations should be submitted and the tracker would be reset. Currently, the threshold value is set to 1 << 28 = 256M. * Added a variation of submitFrame() to be used in outside command buffer submission. The main difference is that it copies mResourceUseList into GetShareGroupVk() rather than move it. * Refactored the two functions into submitFrameImpl(). * Added a helper function to submit the outside command buffer. * Added explicit copy functions for ResourceUseList and SharedResourceUse. The counter in the copied object is incremented by 1. * Added a test to make sure submitting the outside command buffer does not break the render pass. Bug: angleproject:6354 Change-Id: Ia1d4f857fcbd06934609c94622ccbf675b3b1c72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379231 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
angle-autoroll 093d4287 2022-03-21T12:57:10 Roll vulkan-deps from 51988dcdccbf to 61b4f5b95321 (21 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/51988dcdccbf..61b4f5b95321 Changed dependencies: * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/384881cc90..32c07c0c53 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/6c8f1627a3..af4bf61013 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC ynovikov@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:7105 Change-Id: Id26d7dfdd9745f549ea08f584e4dd9dc88b7bc90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3539789 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi f6910a9a 2022-03-20T22:43:57 Vulkan: Update pipeline creation doc Bug: angleproject:4889 Change-Id: Idb97d0484a716300feb9ed9a3fd882fbec870dbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3539440 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev e56f185b 2022-03-19T10:41:50 Metal: clarify instance count assertions Bug: angleproject:6963 Change-Id: I5a686d560efb7912b3426560c8be2806a943158c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3536659 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Kimmo Kinnunen 9637185c 2022-03-10T15:38:13 Add ForceGPUSwitch to EGL_ANGLE_power_preference eglHandleGPUSwitch() does not work with WebKit sandbox profile. The root cause is that we do not know the primary display, and as such we do not know which GPU drives this. Add eglForceGPUSwitchANGLE(display, gpuIDHigh, gpuIDLow). This lets the caller figure out the GPU in another process. Then the caller can just set the GPU in the sandboxed process. Add tests that are disabled by default until the runner and the infrastructure supports running the tests with automatic switching enabled. Bug: angleproject:7092 Change-Id: I316ee431156596effbdb89659a5e24291719a204 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516274 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Alexey Knyazev 7c616871 2022-02-01T15:12:53 Metal: Implement ANGLE_base_vertex_base_instance Includes command buffer and MSL translator updates. The DrawElementsInstancedBaseVertexBaseInstance tests from DrawBaseVertexVariantsTest suite fail for dynamic draw and stream draw buffer usages. Bug: angleproject:6963 Change-Id: I6caa144860356d5fc85948b72458bec282ea3a3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3429819 Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Constantine Shablya e74d0e81 2022-02-11T18:05:12 Vulkan: Implement EGL_KHR_partial_update This change provides a trivial implementation of partial update that does nothing, making apps that want this extension happy. A possible efficient Vulkan implementation would use the damage set to narrow down render area, but it appears to only be useful for only some TBDR hardware. Bug: angleproject:6960 Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com> Change-Id: Ic553ac9590c336093f1bf25a6521574622599bf6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427640 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Auto-Submit: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b74d6768 2022-03-17T16:48:21 Vulkan: Refactor D/S usage tracking in render pass This is in preparation for doing the same for color images. That is in turn in preparation for optimizing mid-render-pass clears, which require an answer to the following query: "has this color image been read from / written to so far in the render pass?" Bug: angleproject:5048 Change-Id: I8abe97919897b8fbf644482071bf7326ca3325d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3533143 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill a55526a5 2022-03-17T11:11:37 Vulkan: Ignore VUID-vkCmdDraw-None-06538. Suspected as being incompatible API usage in ANGLE. Bug: angleproject:7105 Change-Id: I8c806b1ae090c5bedd762c1539a228c31a553858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3533140 Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 22f177eb 2022-03-17T16:58:37 Vulkan: Expose advanced blend for non-coherent devices as well Reliance on coherent behavior was accidental. Bug: angleproject:3586 Change-Id: I86d055cf640368b57256910764c44596b23ccdd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3535299 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 44e84661 2022-03-17T15:02:21 Revert "Emulate RGB10 (no alpha) on desktop OpenGL." This reverts commit 6404be2defd3ded3ff2f0437bb87fe515e10f2a7. Reason for revert: Extension was not fully enabled due to test bug. Original change's description: > Emulate RGB10 (no alpha) on desktop OpenGL. > > The OpenGL ES extension GL_EXT_texture_type_2_10_10_10_REV > requires RGB and RGBA formats to be supported but Desktop OpenGL > does not support RGB. Emulate it with the existing > emulatedAlphaChannel path in TextureGL. > > Bug: chromium:1300575 > Change-Id: I0e6d1044afbc55cf6d4f987cc98b357ff11ff006 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3517346 > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: chromium:1300575 Change-Id: Ib3810a18888544f1700a1f648a5094c19973d86d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3533139 Reviewed-by: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Alexey Knyazev 479f1988 2022-03-17T11:50:46 Simplify ValidCompressedBaseLevel Bug: angleproject:7099 Change-Id: I9592aebde56808556f72b2b94a39f94d077f9db2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3529527 Reviewed-by: Brandon Schade <b.schade@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Kimmo Kinnunen b465a736 2021-12-21T12:52:40 Metal: Remove redundant CommandQueue::mMetalCmdBuffersTmp Instead of a member variable, instantiate the temporary at the use site. Bug: angleproject:6842 Change-Id: I64848bc937ce2945e6ac55adea8a6dffcaf9b00d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3347649 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: John Cunningham <johncunningham@apple.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill e8ee847d 2022-02-23T12:25:39 Vulkan: Add UpdateDescriptorSetsBuilder. This helper class encapsulates the vkUpdateDescriptorSets caching. As part of the refactor, we switch passing a ContextVk to passing a vk::Context with some mutable variables. This helps encapsulate ContextVk. Since we use the perf counters in many places, this CL moves the perf counters to vk::Context, so we can access them everywhere. Refactoring change only. Bug: angleproject:6776 Change-Id: Id529962b2f425bece6f9b3bd0cd1698c692e58cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484980 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 98bb4f32 2022-02-23T16:51:32 Vulkan: Implement advanced blend through extension This change exposes GL_KHR_blend_equation_advanced if VK_EXT_blend_operation_advanced is supported. No emulation is yet implemented. Bug: angleproject:3586 Change-Id: Ie7a442c22e028e3aa45ccef52db320e205664d49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3487951 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3ddb21fd 2022-02-23T14:15:48 Front-end support for KHR_blend_equation_advanced Bug: angleproject:3586 Change-Id: I27086295e7455ce8848db1c6004917fea40202e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484785 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade 459bdc2f 2022-03-16T12:04:38 Reintroduce validation check only for D3D To avoid undefined behavior, D3D requires the base mip level to have multiple-of-4 dimensions. Add this validation check back in. Bug: angleproject:7099 Change-Id: Id51f6cd4c745455062b864c0d291b9857e985e35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3530499 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Yuxin Hu 1dc9f126 2022-03-16T19:29:26 Revert "Flush the texture staged updates when destroying context share group" This reverts commit 5c29d795d1625f71ac6999f157b6f3bba79d5256. Reason for revert: this is causing some test failures on chromium and blocking the angle-chromium auto roller job: https://chromium-review.googlesource.com/c/chromium/src/+/3529771/ Original change's description: > Flush the texture staged updates when destroying context share group > > If we are using the extension EGL_ANGLE_display_texture_share_group, > flush the texture staged updates upon destroying the context. With the > extension enabled, the texture could still be alive when both context > and its' EGL::ShareGroup are destroyed. If we have staged updates not > yet flushed, the updates will keep the ShareGroupVk bufferpool occupied, > causing an error upon ShareGroupVk::onDestroy(). > > Bug: chromium:1299211 > Change-Id: I260de93c3a3099e023e31acbe017803e824459ad > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495879 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bug: chromium:1299211 Change-Id: I214161d6a8aec834e1efc5fc9d2479e62e3bfae0 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3530505 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki ed590dc8 2022-03-11T12:54:44 FrameCapture: Add override for Glsizei* types. Fix capturing glGetSynciv with null lengths on Linux. When calling the default WriteParamValueReplay handler with a nullptr, ostream on Linux will write `(nil)`. This fixes retracing all traces containing glGetSynciv calls with null lengths. Add a NullLength test to FenceSyncTests that used to fail in the capture_replay_tests. Test: capture_replay_tests.py --gtest_filter=FenceSyncTest.NullLength/* Bug: angleproject:7071 Bug: angleproject:6808 Change-Id: I0a2bd4db744ce2a026cd932ba0f2f4747672fcc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3526653 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Yahan Zhou 63b54d9d 2022-03-09T17:04:13 Do not copy parent layer frame position The position value in a frame refers to its relative position to its parent. We do not want to copy that to its new child layer. Test: when using ANGLE (with metal or swiftshader backend) with emulator frame, it should render the emulator at the right position. Bug: angleproject:7097 Change-Id: I94f78e1253d7ee016bf7ab512d908f75250ce9c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3523622 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Auto-Submit: Yahan Zhou <yahan@google.com> Reviewed-by: Yahan Zhou <yahan@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Charlie Lao 349636a0 2022-03-15T09:39:36 Vulkan: Update mCurrentElementArrayBuffersync based on dirty bit The previous fix crrev.com/c/3513553 has run into corner case that requires more follow up change crrev.com/c/3522565. But with that, there is report that now we are hitting assertion in handleDirtyGraphicsIndexBuffer(). This becomes a bit fragile This new fix relies on the DIRTY_BIT_INDEX_BUFFER dirty bit and should be more reliable as long as the dirty bit is set properly (if not, then we have other bug that it won't even send down vulkan command to bind the correct element buffer). We could further optimize the code path and create a fast path for most common usages in the future. Bug: chromium:1299261 Change-Id: Ifa8f86d431798c9ca4c128ed71a3e9e0a3537ccb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3526021 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Yuxin Hu 5c29d795 2022-02-28T23:56:46 Flush the texture staged updates when destroying context share group If we are using the extension EGL_ANGLE_display_texture_share_group, flush the texture staged updates upon destroying the context. With the extension enabled, the texture could still be alive when both context and its' EGL::ShareGroup are destroyed. If we have staged updates not yet flushed, the updates will keep the ShareGroupVk bufferpool occupied, causing an error upon ShareGroupVk::onDestroy(). Bug: chromium:1299211 Change-Id: I260de93c3a3099e023e31acbe017803e824459ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495879 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Brandon Schade 6baf1675 2022-03-04T11:04:46 Remove invalid validation check on compressed texture formats Remove the ValidCompressedDimension() check for non-WebGL contexts of compressed formats. This is because compressed texture images can have dimensions that are neither multiples of four nor small values like one or two. Test: gtest_filter=*DXT1CompressedTextureTest.NonBlockSizesMipLevels* Bug: angleproject:7099 Change-Id: Ic86c15dd3187ffab0665f6db21434fffcbe04fef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3526017 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Charlie Lao d4ddd0c1 2022-03-10T16:31:00 Vulkan: Handle the case where the bound buffer is empty If vertex attribute is enabled and buffer is bound, but buffer size is 0, we should not crash. This CL skips mapImpl and data copy all together if size is 0 to avoid crash when calling mapImpl while buffer is invalid. This CL also added a test for this. Bug: chromium:1296467 Change-Id: I79af348f133e1d3b4427f044e370652d0875dc91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516700 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Lubosz Sarnecki 70af5ff0 2022-02-18T14:35:59 FrameCapture: Skip invalid VertexAttribPointer calls in MEC. In CaptureVertexArrayState when a non-default VAO is bound and no GL_ARRAY_BUFFER is bound, VertexAttribPointer calls with a non-null offset are invalid and will produce: "Client data cannot be used with a non-default vertex array object." Add a test that leaves a vertex array with an invalid vertex attribute pointer and used to produce an invalid trace with MEC. Test: angle_end2end_tests --gtest_filter="VertexAttributeTestES3.InvalidAttribPointer/*" Bug: angleproject:7042 Bug: angleproject:7098 Change-Id: Iaf91fe7f191c44df79db47bb5455e5df922f2ed5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3475353 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Alexey Knyazev d1415517 2022-03-15T06:45:23 Skip no-op base instance draw calls Bug: angleproject:3402 Change-Id: I90f17307efb98934b1faf44f2efbdbcfa4db9e0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3524342 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev b9b64b15 2022-03-15T06:31:32 Fix typo in DrawElementsInstancedBaseVertexBaseInstanceANGLE Bug: angleproject:3402 Change-Id: I490695e45b4bec31ea9226c6a7df4d426759c53f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3524341 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Brandon Schade 1760ce37 2022-03-03T17:29:12 Add usage of Spirv through glslang build flag Add new build flag angle_use_spirv_gen_through_glslang. If set, angle_enable_spirv_gen_through_glslang is enabled and the generateSPIRVThroughGlslang feature is also enabled. Bug: angleproject:6210 Change-Id: I8f4f71c2d01314a36b15fae795caa01a1ffa7fbc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3502529 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Kimmo Kinnunen d914e7fb 2022-03-09T16:28:06 Add device id as a part of the key in EGLDisplay cache Otherwise eglGetPlatformDisplay would return displays created with other devices. Bug: angleproject:7087 Change-Id: I6ad3fa03f02892afe43de7e7691fbba17a89d616 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3513753 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill 708ce9cf 2022-03-14T10:37:31 Fix crash when pausing XFB then deleting a buffer. Fix is to validate XFB buffer bindings even if we're paused. This is undefined behaviour so we can use any non-crashing solution. Bug: chromium:1305190 Change-Id: Ib95404cdb13adbde7f34d6cc77473a8b3cbf1de7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3522283 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao e9d9d933 2022-03-14T09:33:28 Vulkan: Fix another corner case of mCurrentElementArrayBuffer mCurrentElementArrayBuffer is vertex array state. But it gets modified with different draw call parameters. When this changes, we always re-calculate mCurrentElementArrayBuffer. And we have added updateCurrentElementArrayBuffer call at various places where we need to reset mCurrentElementArrayBuffer to back to what bound to vertex array. There is still one more places missing such call, that when a different vertex array is been bound, the new vertex array may still have mCurrentElementArrayBuffer set to the special array for LineLoop. We need to reset it upon it gets bound. This CL also adds a new test case DrawElementsTest.LineLoopTriangles from Steven Noonan. Bug: angleproject:6955 Change-Id: Ida95062b071d25be26e59f886bfe3d61e6886c5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3522565 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao b97aab3f 2022-03-09T17:36:24 Vulkan: resync mCurrentElementArrayBuffer when out of lineloop When glDrawElements is called with GL_UNSIGNED_BYTE type or LineLoop mode, we will internally allocate an element buffer and copy data to it. But when we switch out of that mode, we must re-sync mCurrentElementArrayBuffer to what it should be based on VertexArray buffer binding. This CL fix the bug that we were previously not updating it and end up using the wrong element buffer. Also added three tests: DrawWithSameBufferButDifferentTypes: that uses GL_UNSIGNED_BYTE data and GL_UNSIGNED_SHORT data in the same buffer and switch between these two data types without incurring buffer change. DrawWithSameBufferButDifferentModes: draw line mode followed by triangle without the same element buffer. DrawArraysLineLoopFollowedByDrawElementsTriangle: draw line mode with glDrawArrays and then followed by DrawElements. Bug: chromium:1299261 Change-Id: I5c471117d300e9fac9127a9d8fa66d48ac312f03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3513553 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Geoff Lang 6404be2d 2022-03-10T11:04:22 Emulate RGB10 (no alpha) on desktop OpenGL. The OpenGL ES extension GL_EXT_texture_type_2_10_10_10_REV requires RGB and RGBA formats to be supported but Desktop OpenGL does not support RGB. Emulate it with the existing emulatedAlphaChannel path in TextureGL. Bug: chromium:1300575 Change-Id: I0e6d1044afbc55cf6d4f987cc98b357ff11ff006 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3517346 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill a956162c 2022-03-01T13:05:29 Vulkan: Expose performance counters via extension. This CL rewrites the Vulkan perf counters test to work in the angle_end2end_test suite using the newly exposed AMD extension. Note that we implement only a subset of the extension. Instead of generating monitors and starting/stopping them we simply read back all performance counter data at once using the special montior value "0". The CL also enables these tests on SwiftShader. Bug: angleproject:4918 Change-Id: I5d8f6eecb1ccff448657cbdb65b51a225dfb90c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497538 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny af2e0c01 2021-12-13T20:47:25 Capture/Replay: Override GL_HALF_FLOAT type for legacy formats Because GL_HALF_FLOAT and GL_HALF_FLOAT_OES have different values, and the format table created by BuildInternalFormatInfoMap() and queried to obtain the readback format uses GL_HALF_FLOAT_OES for legacy formats, we have to override the type in this case. Bug: angleproject:6333 Change-Id: Ibfdcf2ad80ccfb15872ab441c0f22f0851ffe3f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3332721 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jeff Vigil 66a5c924 2022-03-08T08:51:12 Remove unused Semaphore::init Bug: angleproject:7086 Change-Id: If7bd40ec7cbfebd3238f6a23aa682a57c14bd22b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3511312 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano ab786b21 2022-02-24T15:06:59 Vulkan: Non-mutable DmaBuf images When creating Vulkan images, certain DRM format modifiers can only be used without the mutable format flag. Bug: angleproject:7027 Change-Id: I6d57a4be1c21d30a963b17794aad6806b22acac8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488048 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao fe4fa1cb 2022-03-08T11:10:16 Vulkan: Tune pruneEmptyBuffers() to be a bit more aggressive Right now we check every second and if we find a buffer is empty and remains empty for 4 checks, we free the buffer. This means we may keep peak memory usage for 4 seconds. This CL reduces the check to 1/4 seconds, so that a buffer will gets freed if not used for 1 second. Also added a threshold to keep maximum count of empty buffers to 16. This CL also optimizes pruneEmptyBuffers() function to avoid erase calls on each empty buffer block. We set the pointer to null as we free the empty buffer and a new loop is added at the end to remove all null elements at once. Bug: b/223428306 Change-Id: Iff93d6eb404ca22399b26c7adb7efe5c4b87270d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3511311 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya 4cca6b3e 2022-03-08T14:54:02 Early return when rebinding the same buffer, sampler or texture Bug: angleproject:6955 Test: SimpleStateChangeTestES3.BindingSame* Change-Id: If946a7cf534809d21e49138d9f34dcee61a73627 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3029049 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Vigil 2bfec1a2 2022-03-03T08:22:11 Vulkan: Add EGL to VULKAN mapping for BT2020 colorspace Bug: angleproject:7072 Change-Id: I8d79a9ddcc9f0a4946c72821da25d0eda884d4cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3508166 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 2d12b321 2022-03-03T10:42:03 Remove limit on exposeNonConformantExtensionsAndVersions to expose 3.2 Fix an issue where using the feature exposeNonConformantExtensionsAndVersions would still be limited to version 3.1. Remove this restraint when the feature is enabled. Continue to limit version to 3.1 if either it is a WebGL context or Geometry and Tessellation shader support is not present. Bug: angleproject:3647 Change-Id: I17f46756c22d95b39f2fd9ecb2db7ce4de903a2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3502173 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Jamie Madill 24c641dc 2022-03-01T11:12:38 Add stubs for AMD_performance_monitor. We can piggy-back on this extension to report internal ANGLE performance counters to the ANGLE tests. Includes a minor variable de-duplication in the EP generator. Bug: angleproject:4918 Change-Id: I4a76aea957b423a36a90349643bd50a4e1905849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497537 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 74f32702 2022-03-03T13:13:34 Metal: Fix for mulitsampled buffers losing their contents Fixes tst included as well as WebGL CTS https://www.khronos.org/registry/webgl/sdk/tests/conformance2/renderbuffers/multisample-draws-between-blits.html Both fail on M1 without this fix. Also fixes WebKit bug https://bugs.webkit.org/show_bug.cgi?id=237113 Bug: angleproject:7073 Change-Id: Id7baa2575c817561f8a0a99181c986b758376a8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3506089 Reviewed-by: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Jamie Madill ea70300b 2022-03-01T14:55:00 Fix base level changes not updating FBO completeness check. Bug: chromium:1299264 Change-Id: I0881a4916c3eeb9ee023d28d207795899417d530 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3498282 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano 47977b0e 2022-03-01T15:24:51 EGL: Validate and implement dmabuf extensions Add validation and default implementation of dmabuf extensions. Actual implementation should be defined by concrete Display subclasses. Bug: angleproject:7065 Change-Id: Ie8d7081f7bcb065c809a52a42abdb7af0e75c816 Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> Signed-off-by: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497840 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 2e7cfa9b 2022-02-22T13:10:12 Metal: Fix WebGL CTS fbomultisample tests failing in Metal These tests were failing in Metal: deqp/functional/gles3/fbomultisample.2_samples.html deqp/functional/gles3/fbomultisample.4_samples.html deqp/functional/gles3/fbomultisample.8_samples.html This CL only fixed the tests failing on AMD. Intel still fails. See: https://anglebug.com/7079 Bug: angleproject:7049 Change-Id: I745672bba2e9b8b1d34c7a81e07410889eddd35f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3482157 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Hailin Zhang 36132a26 2022-02-24T10:52:31 Reland "add host cached bit for staging buffer" This is a reland of commit e1af34a6f4fbcdc9bf1da5498f87b6d2aa8b526b Original change's description: > add host cached bit for staging buffer > > bug: b/219974369 > Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> bug: b/219974369 Change-Id: If1b69490a9cbe0784972d85d1ceac8d598c68def Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3503997 Reviewed-by: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Antonio Caggiano e67027c2 2022-02-15T17:21:44 Vulkan: Fix DRM format support verification Include VkImageFormatListCreateInfo structure in pNext chains to both support verification and creation functions. Bug: angleproject:7027 Change-Id: I04ba396252c159f4d28dde002b7e07b7194623ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3464856 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Craig Stout <cstout@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 36ce2646 2022-03-04T11:37:08 Vulkan: Align the size before calling into VMA's allocator The size we saved in BufferSuballocation object may used for vkFlushMappedMemory() call. This will ensure that we save the aligned size to avoid VVL error for unaligned size in that flush call. bug: b/219974369 Change-Id: Iccf3199f43cd346dab80083d5494fbaeee39948f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3504000 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya f9ade9fb 2022-02-18T15:08:54 Vulkan: Add feature to create pipeline during glLinkProgram Creating the pipeline will trigger the compilation of shaders to byte code thus warming up Vulkan shader caches. Typically most apps call into glLinkPrograms during app loadtime and the goal is to improve cache hit rate and reduce CPU workload during game play. Bug: angleproject:7046 Test: ProgramBinary*CreatePipelineDuringLink* Change-Id: I71351d45a9aa84e220ca38503735e94cff1dcf98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3478354 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuxin Hu 1cef917c 2022-03-02T23:50:11 Reland "Remove ImageViewHelper from ResourceUseList" This is a reland of 126e967de3978f0dc4f6cf0fa3f9749366ea39ba Original change's description: > Remove ImageViewHelper from ResourceUseList > > Instead of keeping a dedicated SharedResourceUse mUse for > ImageViewHelper, let ImageViewHelper take ImageHelper.mUse > for lifetime tracking. ImageViewHelper no longer needs to > add its' own mUse in the ResourceUseList through retain() > calls, and this should cut the ResourceUseList size by > almost half. For instance, in the trace aztec_ruins, > the maximum ResourceUseList size before the change is 3643, > and the maximum ResourceUseList size after the change is 1694. > Since ImageViewHelper no longer needs to keep SharedResourceUse > mUse as a class memberWe can remove the inheritance from > Resource class, and make ImageViewHelper simply a NonCopyable class. > Bug: angleproject:6717 > Change-Id: I460e83f5f3c1d6ef9722b9f3c9a5ba9552563cb9 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3449450 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:6717 Change-Id: I3aa9785d7dcdc8db82847f1586f8cd7d5c838d7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3501194 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Jamie Madill ef17f38a 2022-03-01T10:15:26 Vulkan: Add overlay widget for cache key size. Bug: angleproject:6776 Change-Id: I35ab18bc5919129b2decf58d541499f771140e47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3472754 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ee96a461 2022-02-22T12:23:06 Vulkan: Fix missing empty buffer descriptor. This could happen for SSBOs and UBOs when the shader renders without a bound buffer, and robustness enabled. Bug: angleproject:6707 Change-Id: I993f2489aca47f07068908858c83afa78c9e0402 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484979 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Jamie Madill e14a20e3 2022-03-04T15:05:07 Revert "add host cached bit for staging buffer" This reverts commit e1af34a6f4fbcdc9bf1da5498f87b6d2aa8b526b. Reason for revert: Causes VVL error on Pixel 6: https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/237/overview Original change's description: > add host cached bit for staging buffer > > bug: b/219974369 > Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Change-Id: Ie91fe94471f48ac880c6470c69ac5e7746c603c9 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3503690 Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d9002eef 2022-03-01T16:14:47 Protect against deleting a current XFB buffer. Bug: chromium:1295411 Change-Id: I097f272c38e444e0af71aa55c0dc508a07aa0bd3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3498262 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao b72718d2 2022-02-22T16:18:45 Vulkan: Fix the data race for mUse from two threads A data race of mUse object between two threads can occur with the following sequences: 1) You use the buffer in the context, it adds into mResourceUseList 2) You release the buffer. Now it goes into mGarbageList, even though it is still in the mResourceUseList. Now this mUse object has references from two lists, the mGarbageList and mResourceUseList, and they do not use the same mutex lock. This means the race could happen and corrupt the mUse data. The same thing could happen with ImageHelper object as well. This quick fix also grabs mGrabageMutex while processing mResourceUseList. This CL creates a new garbage list to hold garbage that has not been submitted to vulkan. And this list will only accessed from submission thread and with mGarbageMutex lock held. The advantage of this is that mSharedGarbage will only have objects that already submitted, which means it is in FIFO order so that we can break out the loop as soon as we see an uncompleted garbage. This bug was exposed by MultithreadingTest.MultiContextClear/ES3_Vulkan_SwiftShader on linux-tsan-test Bug: angleproject:7045 Change-Id: I264c970579aaa53373a61ff067fa0e21eb410ae6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3482158 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Hailin Zhang e1af34a6 2022-02-24T10:52:31 add host cached bit for staging buffer bug: b/219974369 Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 348ece42 2022-03-01T15:40:38 Vulkan: Fix issue with redefining a layered attachment. The fix ensures we complete level redefinition before we get the layer render target in TextureVk::getAttachmentRenderTarget. Bug: chromium:1296866 Change-Id: Id7fa8e9fed5e766c30580b09336713c675c4e4f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3498283 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 7b202392 2022-03-02T17:32:45 Capture/Replay: Fix capture on Linux Need to add support for printing "const GLint *" types. We've been falling into the default handler and getting lucky with how other platforms handle ostream with a null value. We use this extensively with glShaderSource(). Test: MEC of an existing trace on Linux Bug: angleproject:7071 Change-Id: I7e4f1fbf2876dddac49ea6583918dbc534070d75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3501201 Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 55f57a37 2022-02-18T14:43:44 Vulkan: Reserve memory in move-constructor of ResourceUseList std::move leaves source in default state, re-reserve space for other.mResourceUses. Bug: angleproject:4950 Change-Id: Ib2b544c58676dc4a69f09926f05d73e0a57429d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3499045 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 19fd3bc5 2022-02-28T13:23:20 Fix unaligned reads on armeabi-v7a If an application provides unaligned data to glVertexAttribPointer, we may attempt an unaligned read from this application-provided buffer. This change detects such a case and copies the data byte-by-byte in order to prevent SIGBUS errors on architectures that do not support unaligned reads. This fixes the issue ONLY for integer-to-float vertex attribute conversion. Other vertex attribute processing functions may still be affected by this problem. Bug: angleproject:7001 Test: VertexAttributeTestES3.DrawWithUnalignedData* Change-Id: Ic66a150a0bf9fe4df3afe5fc5c91646a46186e8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3448420 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Cody Northrop 1fd544a4 2022-02-25T12:22:01 Vulkan: Disable shader validation cache on Android With local testing and code analysis, we can see that shader validation caching doesn't work on Android. Turning it off entirely results in a decent speedup: Pixel 6 Pro Before: ~10000 ms Pixel 6 Pro After: ~7000 ms Test: angle_end2end_tests --gtest_filter="*GLSLTest*Fragment*ES3_Vulkan" Bug: angleproject:7050 Change-Id: I8107c366b5e2dca7131626d29262d64ad9666e0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3491461 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jeff Vigil 51967b4f 2022-02-11T13:01:54 Vulkan: Fix enabling external fences and semaphores These capabilities are Instance extensions need fixed to enable Native fences for Android Bug: angleproject:7009 Change-Id: I9f07dc88cabd52712ebde28ba938662d7773c8b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3457743 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Ian Elliott 5e87ae0a 2022-03-01T12:41:00 Use VK_ANDROID_surfaceless_query for EGLConfig formats That extension allows DisplayVkAndroid::generateConfigs() to query the swapchain formats (but not yet colorspaces) before ANGLE is given any VkSurfaceKHR. This is used for creating EGLConfig's with GL_RGB10_A2 and GL_RGBA16F. Bug: b/203826952 Change-Id: I55302c98641fbce93f7af428087430763676bdb4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3492482 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Trevor David Black <vantablack@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Antonio Caggiano b92ebdb7 2022-02-24T12:23:09 EGL: Add code-gen for dmabuf extensions Add code-gen for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers. Bug: angleproject:7065 Change-Id: Ib1bd2a881f11e96b1e7e5128975bdba3bdc41e0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495122 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano bf619311 2022-03-01T17:23:38 EGL: Implement isX11 for DisplayGLX This fixes CreatePlatformWindowSurfaceEXT for the GL renderer. Bug: angleproject:6961 Change-Id: Iaec90f5fe81ee605f43d62e6e63a3fbedd314cb4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497684 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny 5118002e 2021-11-29T21:01:03 Capture/Replay: test and handle texture gen-on-bind Bug: angleproject:6425 Change-Id: Ieb4c0a7a6ffdbf0690c07c10e001835a0dcbb6e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295620 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny bc20e55b 2021-11-29T21:00:45 Capture/Replay: test and handle renderbuffer gen-on-bind Bug: angleproject:6425 Change-Id: I591bf0fdfe2e7f83d7e02f63c8265234f7b85df6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295618 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny efb951e8 2021-11-29T21:00:02 Capture/Replay: test and handle buffer gen-on-bind Bug: angleproject:6425 Change-Id: If8b573d0d77192befe6db82498158c535bd3b104 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3295619 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 32881018 2022-01-14T16:03:22 Capture/Replay: atomic counter buffer limits are shader specific Therefore, the override must also be applied to the per shader values. Bug: angleproject:6895 Change-Id: Iecd790afaca9358ee767d41b4c806bb8257b5fa6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3386948 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Tim Van Patten 5749ec7d 2022-03-01T02:14:42 Revert "Vulkan: Move mid-RP color clear to loadOp if content undefined" This reverts commit cfe5a1735a934cc83133bb6c69d19aa27278a270. Reason for revert: https://bugs.chromium.org/p/angleproject/issues/detail?id=5048#c7 @timvp That change just caused a regression in my project. I clear the color + depth buffer before drawing, but initially draw only to the depth buffer. It seems that it decided to ignore the color buffer clear as a result of that. Original change's description: > Vulkan: Move mid-RP color clear to loadOp if content undefined > > Instead of using vkCmdClearAttachments, if the color attachment has not > been written to, modify the loadOp of the currently open renderpass to > CLEAR. > > Bug: angleproject:5048 > Test: VulkanPerformanceCounterTest.MidRenderpassClear > Change-Id: Ida47e6ac7d0f29e2c49bdf2e74c1d876a5d7c223 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3381912 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Tim Van Patten <timvp@google.com> Bug: angleproject:5048 Change-Id: Iec5c73632429a80f955f7d659cf670f9cbb6c9b7 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3496662 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop c80c7ae3 2022-02-24T10:43:15 Capture/Replay: Merge Deletes in Reset Before this CL, when regenning resources, we would iterate through each resource ID and issue a delete followed by a gen. The delete is required to get resources back to their original state, often caused by applications recreating them during the run. This ran into problems when our resource maps had stale data in them, i.e. a texture that had been deleted by the app but remained in our gTextureMap. We could inadvertently delete a resource we had just genned. For example, in ResetReplay(), say we have two textures to delete: // gTextureMap[1] start with 5 const GLuint glDeleteTextures_texturesPacked_1[] = { gTextureMap[1] }; glDeleteTextures(1, glDeleteTextures_texturesPacked_1); // We just deleted texture 5, now create a new one glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); // The driver returned 15, which was unused at this time UpdateTextureID(1, 0); // gTextureMap[1] now contains 15 ... // gTextureMap[2] happens to start with 15, which was in use in // the trace, but was deleted and is no longer in use. The // deleted value is not cleared from gTextureMap (which is // another possible way to solve this). const GLuint glDeleteTextures_texturesPacked_2[] = { gTextureMap[2] }; glDeleteTextures(1, glDeleteTextures_texturesPacked_2); // Whoops! We just deleted our brand new texture 15, even though // it no longer maps to the original texture. glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(2, 0); // Now gTextureMap[2] contains whatever came back from the driver ... // The first use of gTextureMap[1] will fail on loop because // texture 15 no longer exists! To avoid this problem we delete all resources up front before genning any new ones. const GLuint deleteTextures[] = {gTextureMap[1], gTextureMap[2]}; glDeleteTextures(2, deleteTextures); // Now we no longer have any deletes in the create sequence glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(1, 0); glGenTextures(1, reinterpret_cast<GLuint *>(gReadBuffer)); UpdateTextureID(2, 0); This is applied to all the resources we regen right now. This CL: * Merges the deletion of new resources (that didn't exist when the trace starts) with resources that are being regenned. That means there is just one big delete. * Removes Delete from the call sequences we track for each resource since we no longer need to keep them around. * Adds a formatting helper to avoid code duplication. Test: Blade&Soul Revolution MEC (UE4) Bug: angleproject:4599 Bug: angleproject:7053 Change-Id: Ida3b7e1ad5d94c5e9860447d5cf959278f37ad47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3492849 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Tim Van Patten cfe5a173 2022-01-11T19:26:42 Vulkan: Move mid-RP color clear to loadOp if content undefined Instead of using vkCmdClearAttachments, if the color attachment has not been written to, modify the loadOp of the currently open renderpass to CLEAR. Bug: angleproject:5048 Test: VulkanPerformanceCounterTest.MidRenderpassClear Change-Id: Ida47e6ac7d0f29e2c49bdf2e74c1d876a5d7c223 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3381912 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 8390196a 2022-02-26T02:36:22 Revert "Remove ImageViewHelper from ResourceUseList" This reverts commit 126e967de3978f0dc4f6cf0fa3f9749366ea39ba. Reason for revert: Hits an ASSERT about too much garbage being accumulated. anglebug.com/7063 Original change's description: > Remove ImageViewHelper from ResourceUseList > > Instead of keeping a dedicated SharedResourceUse mUse for > ImageViewHelper, let ImageViewHelper take ImageHelper.mUse > for lifetime tracking. ImageViewHelper no longer needs to > add its' own mUse in the ResourceUseList through retain() > calls, and this should cut the ResourceUseList size by > almost half. For instance, in the trace aztec_ruins, > the maximum ResourceUseList size before the change is 3643, > and the maximum ResourceUseList size after the change is 1694. > Since ImageViewHelper no longer needs to keep SharedResourceUse > mUse as a class memberWe can remove the inheritance from > Resource class, and make ImageViewHelper simply a NonCopyable class. > > Bug: angleproject:6717 > Change-Id: I460e83f5f3c1d6ef9722b9f3c9a5ba9552563cb9 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3449450 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:6717 Change-Id: Iea3d40458e2cc5be6ab0257ba6df8b82a4eeecda No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3491345 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ce243358 2022-02-25T14:07:17 Vulkan: Add precision fix to SPIR-V transformation validation The SPIR-V transformation validation ASSERT was done before varying precision fixes were determined. This change reorders the operations such that the ASSERT also includes varying precision fix information. Bug: angleproject:7046 Change-Id: I1685a41cda080ac128025aa84a783984042e7c4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488559 Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano f762cb1b 2022-01-05T20:33:06 EGL: CreatePlatformWindowSurfaceEXT Implement CreatePlatformWindowSurfaceEXT just like CreatePlatformWindowSurface in egl_stubs.cpp taking into account that native window for X11 should be Window* instead of Window. Bug: angleproject:6961 Change-Id: Ic129bd3e9dd264fdee12b062b5b422a9a6012dd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427425 Reviewed-by: Jeff Vigil <jvigilsamsung@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brandon Schade ded25241 2021-08-11T18:38:15 Vulkan: Clear Recycler's mObjectFreeList on destroy Previously the Recycler class never freed it's mObjectFreeList. Free it on destroy(). Bug: angleproject:6278 Change-Id: I3d207aaf67db92350886528c2fb1ce57c3441136 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3089659 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Kyle Piddington af45d166 2022-02-23T14:05:47 Metal: PVRTC formats fail conformance tests on simulator Remove support for PVRTC in simulator, as conformance tests fail Bug: angleproject:6874 Change-Id: I2c3f9e26523098aaa6a988db5cb3f4bf748a0cdc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3485640 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Yuxin Hu 126e967d 2022-02-09T01:46:25 Remove ImageViewHelper from ResourceUseList Instead of keeping a dedicated SharedResourceUse mUse for ImageViewHelper, let ImageViewHelper take ImageHelper.mUse for lifetime tracking. ImageViewHelper no longer needs to add its' own mUse in the ResourceUseList through retain() calls, and this should cut the ResourceUseList size by almost half. For instance, in the trace aztec_ruins, the maximum ResourceUseList size before the change is 3643, and the maximum ResourceUseList size after the change is 1694. Since ImageViewHelper no longer needs to keep SharedResourceUse mUse as a class memberWe can remove the inheritance from Resource class, and make ImageViewHelper simply a NonCopyable class. Bug: angleproject:6717 Change-Id: I460e83f5f3c1d6ef9722b9f3c9a5ba9552563cb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3449450 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya 5094968f 2022-02-24T16:28:00 Vulkan: Account for Invariant in transformDecorate When replacing a varying with a temp variable make sure to propagate the Invariant decorator to the replacement variable. Bug: angleproject:7046 Change-Id: I6e1f9ae5a6045ca963738cfdee5788f04ae620e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3489812 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 1e1505b5 2022-02-24T20:59:57 Upgrade Python scripts from Python2 to Python3 Bug: angleproject:5707 Change-Id: I2c00ef7e7cb529eab2be61378c9a5511a69acd1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3486298 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Antonio Caggiano 613ec1c8 2022-02-15T17:01:01 Vulkan: Duplicate dmabuf FD on import When importing a dmabuf FD, Vulkan takes the ownership and attempts to close on vkFreeMemory. This means we need to duplicate it. Bug: angleproject:7027 Change-Id: Ife3dce30bd0c88c6b6fd622b93a44528b6a9ea68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3464855 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c874943b 2022-02-18T15:29:14 Rename FastUnordered types to FlatUnordered. These names are consistent with the common parlance. Flat indicates the values are packed in memory, while fast indicates that lookup is as fast as possible. Bug: angleproject:6776 Change-Id: I7b56af26d7fdbf5956872be5033c3aa3f6b1b8c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484978 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d3ded9aa 2022-02-22T23:02:59 Vulkan: Make Overlay init lazy So it's not done when overlay is not in use. Bug: angleproject:7051 Change-Id: Iae2ba20cf8c0825dc5f321e5b31dd278cd892066 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3481310 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1e773db9 2022-02-22T10:51:15 Vulkan: Shader support for KHR_blend_equation_advanced Translator can accept the layout qualifiers for the advanced blend equation. No emulation code is currently generated, and ANGLE will initially rely on the corresponding Vulkan extension. Based on change by Brandon Schade <b.schade@samsung.com> Bug: angleproject:3586 Test: angle_unittests --gtest_filter=*KHRBlendEquationAdvanced* Change-Id: I3b728c5f144386d7030bbbb301ddb07daa1492b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3481309 Reviewed-by: Brandon Schade <b.schade@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny 19704a89 2022-02-15T13:21:12 Capture/Replay: Capture GetTexLevelParameterfvANGLE params Bug: angleproject:3565 Change-Id: I940154a4e3ace9a3b8683eebdcd7bbb14402a641 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3461564 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Gert Wollny 223a25f0 2022-01-25T11:15:16 Capture/Replay: Allow capturing of multisample texture content It just works. Bug: angleproject:6611 Change-Id: Ia3da2ee0ea3e09889a65910fd101a7daaa99ea56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3413157 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Amirali Abdolrashidi e47a67e4 2022-02-22T11:40:23 Update Python scripts to run with Python 3 * Updated the scripts used in run_code_generation.py so they could be run with Python 3 with no errors. Bug: angleproject:5707 Change-Id: Iad7ff61a34ce53b6d54821cdd53ee846dc4afc3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3482156 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b80635ca 2022-02-22T15:50:58 Revert "Vulkan: Suppress VVL message about allocation exceeding heap size" This reverts commit 158d47831e77edf16721f631c1c4b45149182f4d. Reason for revert: No longer necessary anglebug.com/6444#c20 Original change's description: > 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> Bug: angleproject:6444 Change-Id: I6b153f6002b35c057fed11d287e0c8211f4ada66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3480738 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Nicolas Capens <nicolascapens@google.com> Commit-Queue: Nicolas Capens <nicolascapens@google.com>
Antonio Caggiano 2944e265 2022-02-15T16:57:53 Vulkan: Fix dmabuf memory importable check Bug: angleproject:7027 Change-Id: I64522d2629c153b8456c975a06fd4293f89aa19a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3464854 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao de37ad17 2022-02-16T15:30:46 Vulkan: Call releaseStagedUpdates before releaseImage When Texture is destroyed, we call TextureVk::releaseAndDeleteImageAndViews(). Right now it calls releaseImage() first and then calls releaseStagedUpdates(). The correct order should be releaseStagedUpdates() before releaseImages(). Otherwise for EGLImages, releaseImages will set mImage to nullptr which will make releaseStagedUpdates skip and leave the staged updates there which causes problem since context gets destroyed while EGLImage still hold onto staging buffer belongs to this context's shared group. Bug: b/219646764 Change-Id: I04a005b742a0d90b981a2f399a5e03b03e3a0adb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3469727 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Lubosz Sarnecki d98f4812 2022-02-17T15:22:22 FrameCapture: Capture empty buffer generation. This avoids emitting VertexAttribPointer with non-null offsets when the array buffer is empty and a vertex array is bound in MEC. When no buffer is bound, which was also the case if the buffer was empty, non-null offsets are not allowed in VertexAttribPointer and will result in: "Client data cannot be used with a non-default vertex array object." Add EmptyArrayBuffer test to VertexAttributeTestES3. Test: angle_end2end_tests --gtest_filter="VertexAttributeTestES3.EmptyArrayBuffer/*" Bug: angleproject:7026 Change-Id: I0cb02a5588f5d2bbc85f58b75fd14493b644d52b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3468524 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Charlie Lao f996d4d8 2022-02-16T09:27:04 Vulkan: Fix DynamicBuffer cache reuse. There is a regression bug that the DynamicBuffer's BufferHelper's size is no longer the size of entire buffer block's size, but the size of suballocation. This caused buffer reuse logic to screw up since it relies on the size to make the decision to keep or free the mFreeBufferList. This CL fixes this bug by using the buffer block's size. This CL also removes DynamicBufferPolicy since it is not used any more since most of DynamicBuffer usages that triggered that DynamicBufferPolicy implementation have been switched to BufferPool. The remaining DynamicBuffer usage is only for attributes and uniforms which are generally small and per context. Bug: angleproject:6980 Change-Id: I9e013cbd67dd74f5e7fc5bb7d9c9696bd1f69965 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3469714 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Lubosz Sarnecki 00169174 2022-02-17T14:11:01 gl.xml: Remove GL_BLEND_EQUATION_EXT from GetPName. When retrieving the GL_BLEND_EQUATION enum using glGet, FrameCapture incorrectly emitted GL_BLEND_EQUATION_EXT, which is not part of core GL4, GLES 2+3. Add BlendEquationGetInteger test to SimpleOperationTest which failed to compile in the capture/replay tests before this change. Bug: angleproject:7026 Test: angle_end2end_tests --gtest_filter="SimpleOperationTest.BlendEquationGetInteger/*" Change-Id: I886e64ca316754f05ada8e45604bd3aef58a5ba5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3468522 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Jamie Madill 8ade4c2f 2022-02-16T13:14:54 Vulkan: Add overlay and stats for descriptor set caches. This adds more overlay widgets for different metrics of descriptor sets, including for uniforms and for all sets. Bug: angleproject:6776 Change-Id: If1a053bd711454227e7ccbdb01202a712a5f9787 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3469228 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 671fcf73 2022-02-16T14:22:38 Vulkan: Add a feature to retain SPIR-V debug info Add a feature to retain debug info in SPIR-V blob. It is enabled when validation layers are enabled. Bug: angleproject:5901 Change-Id: Iccdff31ae0f12fc95d59d20e43e94b6f3d1ae00e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2850388 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Jamie Madill 1315bc81 2022-02-09T11:25:58 Vulkan: Refactor DynamicBuffer::allocate. Reduces duplicate code by re-using allocateFromCurrentBuffer. Bug: angleproject:6980 Change-Id: I3f1126a53136be8f68a3a79008dd9adae45c86b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3449279 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>