src/libANGLE/renderer/vulkan/RendererVk.cpp


Log

Author Commit Date CI Message
Lubosz Sarnecki d3753039 2021-10-14T17:21:47 Reland "RendererVk: Enable VK_KHR_image_format_list on SwiftShader." This is a reland of 8559d50b3b6fcc71b939be4a2c0ca3b48a797d61 Original change's description: > RendererVk: Enable VK_KHR_image_format_list on SwiftShader. > > This reverts commit 08b42714f51dc87e16d52757b4b115037218a4ba. > > Bug: angleproject:5281 > Bug: chromium:1245774 > Change-Id: I773d95225301ccf3c2807fd2269b6d7da1195a16 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223679 > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5281 Bug: chromium:1245774 Bug: chromium:1260941 Change-Id: Ic6992bcc4b44aa16a2931271350a6f6d2a23d9c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3232555 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi bb0e0dea 2021-10-18T21:46:44 Roll vulkan-deps from 5be75e2ae595 to a9d8c46f2b61 (6 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/5be75e2ae595..a9d8c46f2b61 Changed dependencies: * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/06ebc4806b..35fd0e17d0 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/6d9e5b07d6..61688e09fe * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/77cd59ba80..78b1f89454 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 syoussefi@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:6584 Change-Id: I8da9da9f82ccaf781d89a4f7975fb7520d3b6b28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226052 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 670b58d8 2021-10-18T19:50:10 Revert "RendererVk: Enable VK_KHR_image_format_list on SwiftShader." This reverts commit 8559d50b3b6fcc71b939be4a2c0ca3b48a797d61. Reason for revert: Causes MSAN failures. See crbug.com/1260941 Original change's description: > RendererVk: Enable VK_KHR_image_format_list on SwiftShader. > > This reverts commit 08b42714f51dc87e16d52757b4b115037218a4ba. > > Bug: angleproject:5281 > Bug: chromium:1245774 > Change-Id: I773d95225301ccf3c2807fd2269b6d7da1195a16 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223679 > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5281 Bug: chromium:1245774 Bug: chromium:1260941 Change-Id: Id6712aed68ed04d2525549ae016594aa05243a5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226312 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten eb1d2474 2021-10-04T20:23:26 Vulkan: Add R8G8B8_UNORM to vk_format_map.json The map of R8G8B8_UNORM -> VK_FORMAT_R8G8B8_UNORM is missing from vk_format_map.json. This leads to attempting to get format bits for angle::FormatID::NONE / VK_FORMAT_UNDEFINED. This CL adds R8G8B8_UNORM to vk_format_map.json, so devices that support it, like ARM, can use it. This allows those devices to import AHBs created with R8G8B8_UNORM. This CL also adds some additional ASSERT() and UNREACHABLE() calls to catch missing formats sooner. This allows the EGL tests to pass on ARM devices, but the tests are still skipped due to Qualcomm not having the necessary support for optimal tiling. Bug: angleproject:6277 Test: dEQP-EGL.functional.image* Change-Id: I41b7ead97a10ae80be4b6048d36d0d85ad71784f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204152 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 8ef1b2a2 2021-07-15T15:27:15 Vulkan: Add BufferMemoryAllocator class BufferMemoryAllocator class will be responsible for memory allocation for vkBuffers. The original Allocator class remains the wrapper for vmaAllocator. Bug: b/195588159 Change-Id: I26d016e2f8d13ba459d0aa0bd4e1ebf4d0d48251 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3036256 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 123ba58d 2021-10-14T11:56:35 Vulkan: Remove "last submitted serial". This fixes race conditions with the async command processor. Instead of querying specific serial numbers, we ask the command queue to either wait for idle, or return the answer to "are you busy" directly. Bug: b/172704839 Change-Id: I06a8268d9b58d8c33b783af00ca74979ee158316 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223641 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Lubosz Sarnecki 8559d50b 2021-10-14T17:21:47 RendererVk: Enable VK_KHR_image_format_list on SwiftShader. This reverts commit 08b42714f51dc87e16d52757b4b115037218a4ba. Bug: angleproject:5281 Bug: chromium:1245774 Change-Id: I773d95225301ccf3c2807fd2269b6d7da1195a16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223679 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao ea580484 2021-10-05T13:40:01 Vulkan: Add feature flag to prefer CPU copy instead of staged update For ARM GPU, use GPU to do buffer to buffer copy has performance penalty due to potential bubble in the vertex pipeline. This CL adds a feature flag preferCPUForBufferDataSubData so that we can enable this behavior for ARM GPUs. This CL also tracks if GPU has referenced this BufferVk's storage since it got new storage. Due to sub-allocation, we may get a new sub-range of the same BufferHelper object when allocating new storage. But we currently do not have a way to track GPU progress of the sub-range of a buffer. So we will end up using BufferHelper's queueSerial to decide if it is still GPU busy or not. This CL adds mHasBeenReferencedByGPU boolean variable that will set to false when we got a new allocation and set to true as soon as buffer is been referenced by any GPU command. We use this to avoid checking queueSerial if it never been referenced by GPU. This is a temporary workaround for the bug, the full fix is tracked by https://issuetracker.google.com/201826021 Bug: b/200067929 Change-Id: I231fb0a678b0165a2ce1775d0aa4dbe7512fb4a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183398 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 2ab7a178 2021-10-06T13:22:19 Vulkan: Remove suppressions for SPIR-V validation A bug in VVL produced validation errors regarding texel gather offset, but it seems to be fixed now. Bug: angleproject:6491 Bug: angleproject:6492 Change-Id: Ia20816ea0be65aa185a8ee89cf58edd33e452875 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 53388e54 2021-10-08T15:43:34 Vulkan: Remove VVL suppresions for VK_EXT_provoking_vertex Suppressions were added as ANGLE was using an unreleased extension. This extension is released and supported by VVL now. Bug: angleproject:4063 Change-Id: Ief23ac1ac3a3e6ecbd7b04a6b583302bbdf48398 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3213298 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4ad55d07 2021-10-05T15:45:05 Vulkan: Turn 1-view multiview FBOs into no-multiview When only 1 view is enabled, ANGLE continued to append a VkRenderPassMultiviewCreateInfo struct to the render pass. VVL produced an error when transform feedback was used in this case, quoting that multiview and transform feedback cannot mix. This change makes sure that 1-view framebuffers are threated as if they were not multiview. Bug: angleproject:6478 Change-Id: If079c9a052f822342a49a9cc880be2577a356b64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206269 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 4c23b817 2021-10-08T19:29:08 Roll vulkan-deps from d78bd80b30f6 to 651804d6bf55 (11 revisions) Suppressing SYNC-HAZARD-WRITE_AFTER_WRITE messages after https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3403 https://chromium.googlesource.com/vulkan-deps.git/+log/d78bd80b30f6..651804d6bf55 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/c8cdbac705..b9ba4c5743 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/8c0ee92eb6..aeffbbd6b9 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/7a6a52723b..51279399ea 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:6550, angleproject:6551 Tbr: ynovikov@google.com Change-Id: I8b85fd82fc1042a5632027b8d6fada123533f276 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3214695 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao 74b2886f 2021-09-22T13:49:57 Vulkan: Try to use CPU to copy when preserving old buffer data When glBufferSubData is called, we may acquire a new buffer if buffer is still GPU busy. When this happened, we have to preserve buffer content if old buffer has valid data in it. Instead of always use GPU to do copy, this CL will check if GPU is not writing to the buffer, we will just use CPU to do the copy form old buffer to new buffer from the ranges outside subData, controlled by the feature flag preferCPUWhenPreservingBufferData. Bug: b/200067929 Change-Id: I42053104b2be8da5f399cca92e934254988f2fd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3177322 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Tim Van Patten 86fe5f29 2021-10-04T17:44:12 VVL: Re-enable vkCmdDraw and vkCmdDrawIndexed Re-enable the following VVL checks: VUID-vkCmdDraw-None-02690 VUID-vkCmdDrawIndexed-None-02690 Bug: angleproject:4768 Change-Id: I1469d21634b28c96e0ac2f2b8c4cd4dfec271d2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3203176 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Cody Northrop dba896cf 2021-10-04T22:17:48 Vulkan: Suppress modified device count warning This is a loader warning added in the following commit: https://github.com/KhronosGroup/Vulkan-Loader/commit/8daad81803f5ed9b36a172c299140dde7a8c4494 It fires on our corp laptops that contain multiple GPUs (one high-performance, one integrated). Most likely caused by Nvidia's Optimus Vulkan layer. It doesn't quite match the patterns of validation layers, but is straightforward to skip by searching for the beginning of the message. Bug: angleproject:6514 Change-Id: Ia93896364cae9e879faf068a100064f2edd04af2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204141 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 4f0e7e7f 2021-10-04T14:50:10 Vulkan: Remove extraCopyBufferRegion workaround. Bug: angleproject:2838 Change-Id: I53ba3cf307f930ae9550d1bfee4650df6e826930 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3202475 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 2f1d503b 2021-09-16T21:49:14 Vulkan: Fix Vulkan secondary command buffers This change abstracts initialization, begin/end, reset and recycle of command buffers such that both Vulkan and ANGLE secondary command buffers are supported. Bug: angleproject:6100 Change-Id: I8c79764ac98b599fda08fe45cf8c4f0a6573f0f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2987873 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 98a6e0a4 2021-10-01T15:06:07 Suppress VUID-RuntimeSpirv-OpImage-06376 Bug: angleproject:6492 Change-Id: I5963506164ae70edf4f2e77401dc86794157f8f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200277 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott 12e5a7db 2021-10-01T13:52:37 Suppress VUID-RuntimeSpirv-OpImage-06377 Bug: angleproject:6491 Change-Id: I0e9f8908077ea10685b7796b2c42086ae6520d05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200275 Reviewed-by: Ian Elliott <ianelliott@google.com>
angle-autoroll 3de06bcd 2021-09-30T21:46:13 Roll vulkan-deps from 788a2f62acbe to 11c6360dd46f (144 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/788a2f62acbe..11c6360dd46f Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/e0771b5d4c..581897f462 * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/c2500e504d..97a438d214 * spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/6cae8216a6..ae217c1780 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/7e860e3831..ba4b390c36 * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/9e62d02763..e500c7c809 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/20cf221e72..edccdb3444 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/642da192c8..a956d1a0e5 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/1e6ed74d5d..6d54fa0fe0 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 ianelliott@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:6478 Change-Id: I28a46296e5b3590601a61707f438d8b238be3ff6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198645 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott dff5c752 2021-09-28T11:27:06 Suppress VVL error: *InterfaceTypeMismatch Suppress VVL error: UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch Bug: angleproject:6442 Change-Id: I1d5412a1be7cba0b3571225d3f3d94c72349742f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3191390 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi eb1d5ca5 2021-01-29T15:34:49 Vulkan: Enable sync validation Based on a change by tobine@google.com Bug: angleproject:5290 Change-Id: Ieae1be5a29f0dcb3ea8aaa04e77fc402380a08b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3171432 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2d79918f 2021-09-16T16:43:53 Vulkan: Pass command pool around Preparatory work for re-enabling support for Vulkan secondary command buffers. The command pool being passed around is not yet used. Additionally, the work to allocate, initialize, reset and recycle command buffers has been refactored to a helper class for better abstraction. The CommandBufferHelper class now holds a pointer to the pool it was allocated from for clean up. Each ContextVk has its own command pool, where Vulkan secondary command buffers are allocated from. The command pool that CommandProcessor had was unused and is removed by this change. Bug: angleproject:6100 Change-Id: I0d4fa6a76ef06e88779145ffe9c613518a8eb390 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167213 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 06c73b3d 2021-09-21T13:37:29 Vulkan: Lift DS feedback read-only suppression. This is now fixed upstream in the spec and the VVL. Bug: angleproject:4975 Change-Id: I6938bae49c982cc4f366c01ab10aedcaa784f972 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3173252 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 458389f2 2021-09-02T22:41:40 Vulkan: Support Linux dma-bufs This change adds support for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers on top of Vulkan's VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier. Bug: angleproject:6248 Change-Id: I581987f88e9ddcf351dc721f499f63912dca05f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop fc9457fb 2021-09-15T10:46:55 Revert "Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch" This reverts commit 62c70b449d2ef5e195c583f7a7627f14587a51dc Reason for revert: VVL bug fixed upstream https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3264 Original change's description: > Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch > > New VVL error causing test failures. > > Bug: angleproject:6382 > Change-Id: I61801828c0879a33502a2d9582e2e7da1bdb9250 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3155571 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Brandon Jones <bajones@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:6382 Change-Id: I41202a1d577fb6d9204ead32df134e6c5b3a1a86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163238 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 371542cd 2021-08-23T23:10:09 Vulkan: Use VK_EXT_load_store_op_none With read-only depth/stencil attachments, ANGLE utilizes storeOp=NONE to optimize memory bandwidth (by avoiding write back of tile memory at the end of the render pass). Simultaneoulsy, this avoids a synchronization hazard with the next write to that depth/stencil image. If a framebuffer contains a depth/stencil attachment but it's unused, ANGLE utilizes loadOp=NONE/storeOp=NONE to effectively remove any memory bandwidth wasted on the attachment. Bug: angleproject:5371 Change-Id: I76cbadbf1194041532ac4b690ffe087298f2de51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3114232 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop 62c70b44 2021-09-10T16:54:49 Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch New VVL error causing test failures. Bug: angleproject:6382 Change-Id: I61801828c0879a33502a2d9582e2e7da1bdb9250 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3155571 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Brandon Jones <bajones@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e22afce9 2021-09-07T12:34:10 Vulkan: Drop requirement for inheritedQueries At this point only timer queries depend on this feature, which can be disabled instead of dropping support to ES2.0. Bug: angleproject:6100 Change-Id: I8389a593d308830e3f820a4541d7accc886fb70f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145611 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2a7855d2 2021-09-01T14:53:31 Revert "Vulkan: Suppress layered FB validation error." This reverts commit 9872e5af32c31064b0a80eb5bf3fc8ce70db0dbf. Reason for revert: VVL bug fixed in https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/3237 Original change's description: > Vulkan: Suppress layered FB validation error. > > This is popping up with a new roll of the VVL. Instead of fixing it, > we can disable it for now. > > Bug: angleproject:6293 > Change-Id: I6cd12a24b26a4f536db16631e198317e8c4d9fcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3103505 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6293 Change-Id: I9eb48aea1920a45a9bdad7953b2122dd595d31c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3136096 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev 797ebdde 2021-09-02T23:15:34 Vulkan: Suppress VUID-vkCmdDraw-blendEnable A new VVL causes failures in BlendIntegerTest.MRT* Bug: angleproject:6355 Change-Id: If62b1a7934574acaeb95601d7fb0a61dc5d9c99a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140159 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Lubosz Sarnecki 08b42714 2021-08-05T17:39:41 RendererVk: Skip VK_KHR_image_format_list on SwiftShader. Enabling the extension produces timeouts on Linux when running Chromium test suites like viz_unittests with a Debug configuration. Bug: angleproject:5281 Bug: chromium:1245774 Change-Id: I6241597dfe0300f3793524d5a73a4ef2cf0dc4eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140158 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 58ec0fbf 2021-09-02T11:47:48 Vulkan: Remove the forceCPUPathForCubeMapCopy workaround This workaround has been disabled since https://chromium-review.googlesource.com/c/angle/angle/+/2594707 Bug: angleproject:2822 Bug: angleproject:3055 Change-Id: Ie9cc12c7616cd9e1801dbd92e21822c63f4d0bef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140214 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop ef96bde8 2021-08-28T23:59:33 Vulkan: Fix VVL error regarding geometryStreams Addresses new validation error: [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Validation Error: [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Object 0: handle = 0xb400007e8176af60, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf1034461 | pCreateInfos[0].pRasterizationState pNext chain includes VkPipelineRasterizationStateStreamCreateInfoEXT, but geometryStreams feature is not enabled. The Vulkan spec states: VkPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams must be enabled (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324) The validation was added in this commit: https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/bdaec8454a27e65dd81f46bbfad1889b7a3e34f6 Test: World of Kings MEC Bug: b/198101940 Bug: angleproject:6339 Change-Id: I3cfacc20d231d246500e83451c9ec6b74d9372f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3127942 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Lubosz Sarnecki 41f7dedd 2021-08-05T16:48:17 Reland "VulkanExternalHelper: Use VK_KHR_image_format_list extension." This reverts commit bd19620fcd599947a2fada3e02061d02d690d9eb. Bug: angleproject:5281, chromium:1233561 Change-Id: I0dc2a142dc7de83c0bdbf2256e9fb372e56d177a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3122124 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9872e5af 2021-08-18T07:56:38 Vulkan: Suppress layered FB validation error. This is popping up with a new roll of the VVL. Instead of fixing it, we can disable it for now. Bug: angleproject:6293 Change-Id: I6cd12a24b26a4f536db16631e198317e8c4d9fcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3103505 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov b1b760e7 2021-08-09T13:37:10 Ignore VUID-vkCmdClearAttachments-baseArrayLayer-00018 New message added in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3133 Blocks vulkan-deps rolls. Bug: angleproject:6262 Change-Id: Iaaafe7539092cbe7eadd01e47b67071d60779929 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3081376 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ac5bcdb3 2021-08-02T18:04:49 Vulkan: Use custom volk init function. This should ensure we're using ANGLE's version of the loader. Bug: chromium:1235314 Change-Id: Ia7318a922e192ce669a8cece070ab518ea421fd5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067511 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Peter Kasting 0d06c3cf 2021-07-26T04:30:39 Fix some instances of -Wunused-but-set-variable. Bug: chromium:1203071 Change-Id: I144165ae5ec47aba88658030a6ba3e371bf31ee7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3053616 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov bd19620f 2021-07-27T23:45:11 Revert "VulkanExternalHelper: Use VK_KHR_image_format_list extension." This reverts commit 4222d5e5a03f85ca07253d54f3087684fe9447b3. Reason for revert: errors on multiple builders when rolling into Chromium https://chromium-review.googlesource.com/c/chromium/src/+/3057227 e.g. https://ci.chromium.org/ui/p/chromium/builders/try/linux_chromium_asan_rel_ng/924126/overview Original change's description: > VulkanExternalHelper: Use VK_KHR_image_format_list extension. > > To retrieve correct size requirements when the VK_KHR_image_format_list > extension is enabled, it must be used to match VkImages created in > vk_helpers. > > RendererVk: Fully enable VK_KHR_image_format_list. > Enable the extension on non-AMD and non-ARM platforms. > > Bug: angleproject:5281 > Change-Id: I3ca60bf6efcf9d9c10d4d96a3fe91b999eb044f7 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035047 > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Bug: angleproject:5281, chromium:1233561 Change-Id: I3b15bb2fc2fb779adac8bbf5d805727a25b5795c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3057071 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Lubosz Sarnecki 4222d5e5 2021-07-16T16:26:17 VulkanExternalHelper: Use VK_KHR_image_format_list extension. To retrieve correct size requirements when the VK_KHR_image_format_list extension is enabled, it must be used to match VkImages created in vk_helpers. RendererVk: Fully enable VK_KHR_image_format_list. Enable the extension on non-AMD and non-ARM platforms. Bug: angleproject:5281 Change-Id: I3ca60bf6efcf9d9c10d4d96a3fe91b999eb044f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035047 Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Shahbaz Youssefi d0c03ff4 2021-07-22T14:55:51 Vulkan: SPIR-V Gen: Fix lvalues passed to in/inout parameters In GLSL, these values are semantically copied when passed to a function as an in or inout parameter. For example in: bool f(inout vec4 a, inout vec4 b) { a = vec4(0); return all(equal(a, b)); } var = vec4(1); bool result = f(var, var); result is expected to be false. In SPIR-V, every parameter is semantically passed by "reference". glslang conservatively uses temporaries to pass to functions. An optimization in ANGLE didn't create temporaries for unindexed lvalues, which did not take into account the above fact. This optimization is limited to out parameters now. Bug: angleproject:4889 Change-Id: Ie1b4b1cecba847ba63d5810d01d0856823b89ddc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046103 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c5f83c34 2021-07-22T11:56:25 Revert "Vulkan: Suppress VVL errors triggered by external formats" This reverts commit f46df3978ab6102768048a6bf40e6f4989276065. Reason for revert: VVL change rolled into ANGLE + Chrome. Original change's description: > Vulkan: Suppress VVL errors triggered by external formats > > Since several tests are hitting these and it may be a VVL bug, > moving to ignore rather than skips. > > Bug: angleproject:6155 > Bug: angleproject:6168 > Change-Id: I38a5be8d792b8b13a490be895a68349bffe69c6e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3028809 > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Mohan Maiya <m.maiya@samsung.com> > Commit-Queue: Cody Northrop <cnorthrop@google.com> Bug: angleproject:6155 Bug: angleproject:6168 Change-Id: I11696095300c214ca0b68624b0eb6763ba9d31f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3043888 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1a4ac82a 2021-07-21T09:39:46 Vulkan: Disable border color on SwiftShader. A bug with floating point clamping is breaking some tests on SwS. Bug: angleproject:6200 Change-Id: Id608f5610a09e85f1bc41e38f20c6f7f0330f77b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3041741 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Vigil d2b659f9 2021-03-25T15:40:58 EGL: implement EGL_EXT_protected_content Context Add Validation check to Contexts and Surfaces Add Vulkan protected memory features and properties Add protected member to Surfaces and Contexts Implement hasProtectedContent in Vulkan Add QueueFamily helper, extent DeviceQueueMap Protected Swapchains always on for Android Add EGLProtectedContentTest Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest Bug: angleproject:3965 Change-Id: I9352b1e594f71bb4e89cee7137a468940d186b1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2800413 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 011ef7ed 2021-07-09T01:33:57 Revert "Ignore VUID-VkSpecializationMapEntry-constantID-00776" This reverts commit 0beafe862b4c21299d40b5ffcf98816828254a2a. Reason for revert: VVL error no longer reproducible Original change's description: > Ignore VUID-VkSpecializationMapEntry-constantID-00776 > > New check added in > https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/2903 > Blocks VVL rolls. > > Bug: chromium:1226682 > Change-Id: Iaf12187c33a0c3736acae6e772277dbe6aa4c402 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3007137 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bug: chromium:1226682 Change-Id: I7df7373fb52a1a64d94fd1973927cef4f89f2f05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3017555 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Mohan Maiya 5c8bf081 2021-06-08T13:12:24 Vulkan: Add support for YUV internal format extension 1. Add a function to upload YUV image data to textures 2. Modify stageSubresourceUpdate method to account for YUV images 3. Create VkSamplerYcbcrConversion when initializing ImageHelper 4. Update hasImmutableSampler to account for native YUV format support 5. Skip initializeNonZeroMemory for YUV formats Bug: angleproject:5773 Test: Texture2DTestES3.TexStorage2D*Yuv*Vulkan* Change-Id: I270f04bbf903cf2bf19f100eb95f32953d491c39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2947767 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill a3f44ab8 2021-07-19T08:23:27 Vulkan: Remove loader logging message in RendererVk. This was causing issues with a Chrome test. Bug: chromium:1230474 Change-Id: I0e5e3df5c9ad5774d6f5a2b41f4f1429000fe81e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035247 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 48da1c35 2021-07-16T13:24:34 Vulkan: Prefer the local vulkan loader over the system one. Load the Vulkan loader ourselves and give vkGetInstanceProcAddr to volk. This allows us to always prefer loading from the current module directory instead of using the platform-specific ordering. Refactor angle::Library loading to use ModuleDir instead of ApplicationDir. CL originally authored by Geoff Lang. Bug: chromium:1219969 Change-Id: I21d1926e90fd66e1c23cea7323991ae55f3d22d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3035444 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop f46df397 2021-07-14T19:41:03 Vulkan: Suppress VVL errors triggered by external formats Since several tests are hitting these and it may be a VVL bug, moving to ignore rather than skips. Bug: angleproject:6155 Bug: angleproject:6168 Change-Id: I38a5be8d792b8b13a490be895a68349bffe69c6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3028809 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 31b06f5f 2021-07-12T10:06:04 Vulkan: Account for immutable samplers that need multiple descriptors It is valid for immutable samplers to need more than 1 descriptor count. Account for this possiblity while calculating descriptor pool size. Bug: b/155487768 Bug: angleproject:5033 Bug: angleproject:5773 Bug: angleproject:6141 Change-Id: Ifb0ed3e4b3c01c61d81dd0c628101f31d4c8bd05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3005329 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill 9274911d 2021-07-12T10:41:16 Vulkan: Update cube map array support check. Bug: angleproject:5143 Change-Id: I0b774096ae762ae088a27ef1b4d52bf446562736 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3021283 Reviewed-by: Nicolas Capens <nicolascapens@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8c07f3c1 2021-07-09T12:35:31 Enable cube map arrays on SwiftShader. Bug: angleproject:5142 Change-Id: I51c58d20da155b90980f27425a99cff2555345fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3018303 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sergey Ulanov b73eee71 2021-07-07T18:51:35 Reland: [Vulkan] Add DisplayVkNull Currently all DisplayVk implementations depend on VK_KHR_swapchain and VK_KHR_surface extensions. When running Chromium on Fuchsia these extensions are never used (content is shown on the screen using ImagePipe API without dependency on swapchain). ANGLE still depended on these extensions for DisplayVkFuchsia. This CL adds DisplayVkNull, which allows to run ANGLE without dependency on swapchain. It's usable only offscreen and cannot present content on a surface. Bug: chromium:1203879 Change-Id: I5cadcdf46ed1cfb5ebb3cb69dbfef063e9e2b826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3012368 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 0beafe86 2021-07-05T16:12:10 Ignore VUID-VkSpecializationMapEntry-constantID-00776 New check added in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/2903 Blocks VVL rolls. Bug: chromium:1226682 Change-Id: Iaf12187c33a0c3736acae6e772277dbe6aa4c402 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3007137 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 153240b2 2021-06-11T16:36:32 Vulkan: SPIR-V Gen: Support loops Loops are similar to if-else in that they generate a number of blocks where the first block specifies divergence (OpLoopMerge) and the merge block. Differently from if-else, there is a block where the condition is evaluated and a block which `continue;` leads to (this last block is the only one allowed to back-jump to the beginning of the loop). Bug: angleproject:4889 Change-Id: Ic59f4bf3e05fbf93cb5af85acd3bc4b0da8412af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2957809 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 5b314268 2021-06-15T17:37:45 Vulkan: Support OVR_multiview and OVR_multiview2 Multiview is supported in Vulkan simply by specifying the number of views in the render pass, and creating the appropriate image views. A number of changes to the way image views and render targets are stored are made to support those that don't cover the entire range of layers. One particular detail that is not implemented in this change is the use of queries in combination with multiview. Vulkan specifies that N queries are actually produced (N being the number of views) which must be summed by the application, but this is not currently done. Bug: angleproject:6048 Change-Id: I1d4a9894c232d3a93d7a97c9fa0eedc334e57469 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967625 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b6adeb2f 2021-06-21T11:11:30 Vulkan: Use pipeline statistics query to emulate primitives generated The VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT query produces the same result as the GL primitives generated query. One caveat is that in combination with rasterizer discard this query may not work. This is emulated by disabling rasterizer discard when this query is active and applying an empty scissor instead. When VK_EXT_primitives_generated_query is released and supported, a similar issue with rasterizer discard persists so this change will facilitate using that extension as well. Bug: angleproject:5430 Change-Id: Id45b6f058c5cb6837e04aa64b1efde28c104e4cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2976181 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Xiaoxuan Liu 96dd515a 2021-03-31T14:21:16 Update glColorspace(EGL_KHR_gl_colorspace) enable logic 1. Enable glColorspace if VK_EXT_swapchain_colorspace is supported, remove dependency on VK_KHR_image_format_list. 2. Enable VK_KHR_image_format_list support on Mali GPU. 3. Fix PbufferTest.ClearAndBindTexImageSrgbSkipDecode test tolerance issue. Bug: angleproject:2514 Bug: angleproject:5281 Change-Id: I2ed54a14afc7c3aee5a5980bd300ab052ebab3d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2793852 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya b77a6c25 2021-06-16T11:01:14 Vulkan: Avoid using VK_WHOLE_SIZE when using dynamic offsets Binding descriptor sets that use VK_WHOLE_SIZE with a dynamic offset results in the VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979 validation error. Updated the updateDefaultUniformsDescriptorSet function to use the uniform's size instead of using VK_WHOLE_SIZE. Bug: angleproject:5924 Tests: dEQP-GLES31.functional.shaders.multisample_interpolation.* SimpleStateChangeTest.UniformUpdateTest*Vulkan UniformTestES3.MatrixUniformUpload*Vulkan Change-Id: Ie4633af61d59a9401f599d336a5b9040cdf18004 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950309 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 5e631c5f 2021-05-20T11:21:18 Vulkan: Disable shadowBuffers feature For PixelUnpack, if the feature is enabled, it always create a shadow CPU mapped memory. Then when mapBuffer is called, it let user write to the shadow memory. At unmapBuffer time, it memcpy the shadow buffer data to context's staging buffer and then issue a vkCmdCopyBuffer from context staging buffer to the PixelUnpack buffer. This involves too many data copies. The proper way to do it is simply make sure to create the buffer as CPU map-able and let user directly write to it. If we find cases that CPU waiting for GPU to finish is causing performance issues, there are two ways to improve/fix it: 1)Add event at end of each renderpass or FBO so that we know if GPU access is finished or not without have to wait for entire frame to finish rendering. 2) Create multiple buffers and ping-pong between them, at least there will be no VkCmdCopyBuffer call involved like shadow buffers do. But we will leave that to future time when we find such need. Bug: angleproject:5986 Change-Id: Ib8300e46e779d20533c1f7f81624de0ce003788b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909758 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill fad9053f 2021-05-20T15:52:38 infra: Add isolated script tests to Pixel 4. This includes angle_perftests and angle_restricted_trace_gold_tests. Bug: angleproject:5941 Change-Id: I6f24d2c2752086ae6f7abba26880070c4a4f0472 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911034 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya dd312cc6 2021-05-21T08:49:48 Reland "Vulkan: Add support for EXT_texture_border_clamp" This is a reland of 4b92e089c01e94730fe26c4c743d76d6c935088d Initializes mPadding to 0 in SamplerDesc::update Original change's description: > Vulkan: Add support for EXT_texture_border_clamp > Add support for GL_EXT_texture_border_clamp. This is implemented by > using VK_EXT_custom_border_color. > > Bug: angleproject:3577 > Test: dEQP-GLES31.functional.texture.border_clamp* > Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Bug: angleproject:3577 Change-Id: I8684242c4bce6e1a006dbe926defaa495fcc2282 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911571 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Yuly Novikov 44fabb7b 2021-05-21T00:51:06 Revert "Vulkan: Add support for EXT_texture_border_clamp" This reverts commit 4b92e089c01e94730fe26c4c743d76d6c935088d. Reason for revert: breaks "Linux MSan Tests" bot https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/28489/overview Original change's description: > Vulkan: Add support for EXT_texture_border_clamp > > Add support for GL_EXT_texture_border_clamp. This is implemented by > using VK_EXT_custom_border_color. > > Bug: angleproject:3577 > Test: dEQP-GLES31.functional.texture.border_clamp* > Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Bug: angleproject:3577, angleproject:5996 Change-Id: I6b62f1a4a43fcfe2d0df2c73de24db83606ce430 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911533 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 2add8d9f 2021-05-19T18:47:40 Don't use VK_EXT_debug_utils with non-Android Vulkan < 1.1.91 Due to a bug in Vulkan Loader < 1.1.91 https://github.com/KhronosGroup/Vulkan-Loader/pull/95 Bug: chromium:1205999 Change-Id: Icdedc2e80abe3c5578e811759f66ddbb71abb2ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2907095 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 88156d26 2021-05-18T23:55:32 Revert "[Vulkan] Add DisplayVkNull" This reverts commit cbbaf76b758fb6a37175795b1f424549d535fbdc. Reason for revert: Suspecting this breaks the fuchsia_x64 bot WebGL tests. Ex: https://chromium-review.googlesource.com/c/chromium/src/+/2904812 Original change's description: > [Vulkan] Add DisplayVkNull > > Currently all DisplayVk implementations depend on VK_KHR_swapchain and > VK_KHR_surface extensions. When running Chromium on Fuchsia these > extensions are never used (content is shown on the screen using > ImagePipe API without dependency on swapchain). ANGLE still depended > on these extensions for DisplayVkFuchsia. > This CL adds DisplayVkNull, which allows to run ANGLE without dependency > on swapchain. It's usable only offscreen and cannot present content on > a surface. > > Bug: chromium:1203879 > Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: chromium:1203879 Change-Id: I6701ffff48fcb925f387e63b356d2d5cf360ea7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2904183 Reviewed-by: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 4b92e089 2021-05-12T09:20:24 Vulkan: Add support for EXT_texture_border_clamp Add support for GL_EXT_texture_border_clamp. This is implemented by using VK_EXT_custom_border_color. Bug: angleproject:3577 Test: dEQP-GLES31.functional.texture.border_clamp* Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Sergey Ulanov cbbaf76b 2021-04-29T16:09:09 [Vulkan] Add DisplayVkNull Currently all DisplayVk implementations depend on VK_KHR_swapchain and VK_KHR_surface extensions. When running Chromium on Fuchsia these extensions are never used (content is shown on the screen using ImagePipe API without dependency on swapchain). ANGLE still depended on these extensions for DisplayVkFuchsia. This CL adds DisplayVkNull, which allows to run ANGLE without dependency on swapchain. It's usable only offscreen and cannot present content on a surface. Bug: chromium:1203879 Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 09dad082 2021-05-07T17:28:15 Vulkan: Add feature flag to flush at framebuffer boundary Testing shows most app traces seeing performance improved on ARM GPU when we flush at FBO boundary instead of one submit per frame. This likely due to more frequent submission means less chance of GPU starvation. This also helps ANGLE to detect GPU finish at finer grain since the queue serial is per submission. Finer grain detection of object completion means memory gets recycled quicker and mapBufferRange able to hit fast code path more often. With this CL, manhattan 3.1 offscreen score also score improves 7%. This may also helps onscreen performance if frame time is on the edge of 16ms by submit FBO rendering earlier instead of been blocked by vkAcquireNextImage. Bug: b/187993625 Bug: angleproject:5295 Change-Id: I2946a7159231d36019ace89805a69ac8e906ce94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888709 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov 859ed396 2021-05-11T16:58:55 Follow up on Vulkan headers update to 1.2.177 Removing duplicate definitions in ANGLE. Bug: angleproject:5905 Change-Id: Ie62ad39a1ebc0d8b0d2c005723f461bc7309eade Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889831 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
angle-autoroll 23ff18f9 2021-04-30T16:45:04 Roll vulkan-deps from 42d8716d0294 to c5559fe406e3 (24 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/42d8716d0294..c5559fe406e3 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/18eef33bd7..56b17b2f2d * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/c624d5387c..72a2ec4c1b * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/22b82872b4..8ec9f456e6 * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/074fa3055c..3f437c4a94 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/d0f1abe22e..5dcea8a449 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/eb3d67bd17..4ee5f2a8be * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/f6b4a3dea4..7ab4afe505 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 jonahr@google.com,ynovikov@google.com on the revert to ensure that a human is aware of the problem. 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/master/autoroll/README.md Bug: angleproject:5905 Tbr: jonahr@google.com,ynovikov@google.com Change-Id: I462413910900b8dc38b3e88b78d9ff2e10b103b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2863562 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao a4588e33 2021-04-29T14:24:20 Vulkan: Disable logMemoryReportStats if driver extension not exist logMemoryReportCallbacks and logMemoryReportCallbacks features are useful for memory debugging. But they rely on VK_EXT_device_memory_report extension. Right now if this extension is not there and you enable the log, you still see the logs but everything is all zero. This CL will disable the feature and print out warning message if the extension is not supported. Bug: None Change-Id: I478ae0ac7ba1ee43245a9fd8a3f1d9907f5d833c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861310 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Tim Van Patten 54e99d36 2021-04-23T13:02:43 Vulkan: Cleanup garbage when destroying EGL images SurfaceFlinger will optimistically create EGL images just in case it does need them in the future, since creating them can be slow and waiting until they're necessary can cause jank on 90hz+ devices. However, since the images are never actually used, ANGLE's garbage is never cleaned up so vkDestroyImage() and the memory is never freed. This can lead to exhausting the device's memory when many EGL images are allocated. For example, when running the CTS test CtsBiometricsTestCases. This CL adds a call to always cleanup the renderer's garbage when an EGL image is destroyed via eglDestroyImageKHR(), since we can't know if a draw will ever be performed in the future (which would normally cleanup the garbage). Bug: b/184388756 Test: atest CtsBiometricsTestCases Change-Id: I104c05c7be44f1e57123ac7eed23effaa982837a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2848131 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jason Macnak <natsu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jonah Ryan-Davis 9c66461c 2021-04-29T11:47:16 Suppress VUID-VkImageViewCreateInfo-pNext-01585 temporarily Vulkan validation failures are happening on ComputeShaderTest on Linux and Windows with AMD. Suppress for now while the issue is investigated Bug: angleproject:5912 Change-Id: If89f7c85bb311a68d6cab85e397112b4178e34d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2860044 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 61288549 2021-04-27T17:42:21 Vulkan: Turn on cubemap arrays for Qualcomm The feature works on Pixel 3 and later, so only disable it on Pixel 2. Bug: angleproject:5143 Change-Id: I824fc9ea71cb612fd99e23b7f37a1a3c278d92aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2855218 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Geoff Lang ccd984ff 2021-04-08T12:06:57 Reland "Add a Vulkan feature to compress float32 vertex formats." This reverts commit 8ace36f8c15877264fb58af7b54baad635899dca. Original change's description: > Revert "Add a Vulkan feature to compress float32 vertex formats." > > Bug: b/167404532 > Bug: b/161716126 > Change-Id: I95157a006d5c1fd2d3c0c2c2be37fa0403c07f93 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510011 > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: b/167404532 Bug: b/161716126 Change-Id: Ic6811fe3a7124e6eb1efe7c72a1a03a120217753 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815260 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Ian Elliott e167d453 2021-04-21T14:14:33 Vulkan: Allow logging with VVL and/or AGI debug utils to be used A recent change allowed logging API commands on Android to be used with Vulkan Validation Layers (VVL). That broke debug utils for AGI (i.e. when the ANGLE-built VVL is not being used). This allows both use cases to be supported. Bug: b/183133198 Change-Id: Ide83ed63fad99d0eca97998365276a1ef365a4e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2842325 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 718022e8 2021-04-16T20:50:34 Reland "Revert "Vulkan: Suppress draw-time push constant VVL warnings. "" This is a reland of b027dfeb83d028ae72ed1957ba81e6c5dc3baffa Original change's description: > Revert "Vulkan: Suppress draw-time push constant VVL warnings. > " > > This reverts commit f34b40dab0487bbabc37645918bed87048107e14. > > Reason for revert: VVL bug is fixed. > > Original change's description: > > Vulkan: Suppress draw-time push constant VVL warnings. > > > > > > > > VUID-vkCmdDraw-None-02698 > > > > VUID-vkCmdDrawIndexed-None-02698 > > > > VUID-vkCmdDrawIndirect-None-02698 > > > > VUID-vkCmdDrawIndirectCount-None-02698 > > > > VUID-vkCmdDrawIndexedIndirect-None-02698 > > > > VUID-vkCmdDrawIndexedIndirectCount-None-02698 > > > > VUID-vkCmdDispatch-None-02698 > > > > > > > > Bug: angleproject:5821 > > Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854 > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Jamie Madill <jmadill@chromium.org> > > Bug: angleproject:5821 > Change-Id: I771e81a46893f2875605e472273f1388587e042e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997 > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5821 Change-Id: I56ccb80eb76c3cedca2a40b8cc0223a879ab1edf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2842309 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amy Liu 95935176 2021-03-26T17:38:21 Handle the compression of big pipeline cache. Big pipeline cache will cost much time to compress. Regarding the perfomance, handle the compression of big pipeline cache in this way: 1)Return when the pipeline cache data is larger than 10M. 2)Use worker thread to complete compression. Bug: angleproject:4722 Change-Id: I62eb69d8c46729261f0502af01450ec301c258f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2788169 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 39d8dde8 2021-04-19T15:02:02 Revert "Revert "Vulkan: Suppress draw-time push constant VVL warnings." This reverts commit b027dfeb83d028ae72ed1957ba81e6c5dc3baffa. Reason for revert: Breaking win-trace-rel b/c of missing VVL roll. Original change's description: > Revert "Vulkan: Suppress draw-time push constant VVL warnings. > " > > This reverts commit f34b40dab0487bbabc37645918bed87048107e14. > > Reason for revert: VVL bug is fixed. > > Original change's description: > > Vulkan: Suppress draw-time push constant VVL warnings. > > > > > > > > VUID-vkCmdDraw-None-02698 > > > > VUID-vkCmdDrawIndexed-None-02698 > > > > VUID-vkCmdDrawIndirect-None-02698 > > > > VUID-vkCmdDrawIndirectCount-None-02698 > > > > VUID-vkCmdDrawIndexedIndirect-None-02698 > > > > VUID-vkCmdDrawIndexedIndirectCount-None-02698 > > > > VUID-vkCmdDispatch-None-02698 > > > > > > > > Bug: angleproject:5821 > > Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854 > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Jamie Madill <jmadill@chromium.org> > > Bug: angleproject:5821 > Change-Id: I771e81a46893f2875605e472273f1388587e042e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997 > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5821 Change-Id: If9f80d052736e40c4c6d3e9a1cd629205901ba49 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836285 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi b027dfeb 2021-04-16T20:50:34 Revert "Vulkan: Suppress draw-time push constant VVL warnings. " This reverts commit f34b40dab0487bbabc37645918bed87048107e14. Reason for revert: VVL bug is fixed. Original change's description: > Vulkan: Suppress draw-time push constant VVL warnings. > > > > VUID-vkCmdDraw-None-02698 > > VUID-vkCmdDrawIndexed-None-02698 > > VUID-vkCmdDrawIndirect-None-02698 > > VUID-vkCmdDrawIndirectCount-None-02698 > > VUID-vkCmdDrawIndexedIndirect-None-02698 > > VUID-vkCmdDrawIndexedIndirectCount-None-02698 > > VUID-vkCmdDispatch-None-02698 > > > > Bug: angleproject:5821 > Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:5821 Change-Id: I771e81a46893f2875605e472273f1388587e042e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 065c2329 2021-04-08T11:59:43 Reland "Vulkan: Add features to modify sampling parameters" This reverts commit a51b57fa2dc73f8bc8acdf0b818cc0315fb23d75. Original change's description: > Revert "Vulkan: Add features to modify sampling parameters" > > Bug: b/167404532 > Change-Id: Iae19dfe165074e8c01216312bddd744c4fb504a4 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510012 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: b/167404532 Change-Id: I2c756b8eb0f61701ef6e33275e557bc199a4d3b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815259 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Nicolas Capens 15f4925a 2021-04-12T15:38:10 Restore EGL_EXT_buffer_age for SwiftShader Vulkan EGL_EXT_buffer_age was previously disabled for SwiftShader Vulkan because of an Android test timing out on Cuttlefish when the buffer age is queried. aosp/1672445 addresses the root cause of the timeout, so EGL_EXT_buffer_age can be supported again. Bug: b/182521420 Bug: angleproject:3529 Change-Id: I5949f721316855d9138eb9f657a6df4e7b49ed71 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2821750 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Nicolas Capens <nicolascapens@google.com>
Ian Elliott b17a9317 2021-04-09T14:39:37 Vulkan: damage rectangles must never be pre-rotated Remove the SurfaceVk::present() code that rotated damage rectangles and the feature flag that controlled that rotation. The Vulkan specification was changed so that the rectangles provided to the VK_KHR_incremental_present extension must never be pre-rotated. The spec change requires the same behavior on all platforms (just in case), even though Android is the only platform known to support rotation. FYI: the Vulkan spec change was merge request 4442. Bug: b/182930524 Change-Id: I5128fd76e718f3d964c9091830bcc5886d265543 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2818826 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ba7531da 2021-04-07T12:51:17 Add tests that use, then update, then use buffers This triggers vk::DynamicBuffer allocations in BufferVk. Bug: angleproject:5719 Change-Id: Ida855b23618497f76102e55f89ab1678f9c08753 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809856 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e249239c 2021-04-08T09:46:48 Vulkan: Add featue flag to force highp to mediump in fragment shader. Adding feature flag that forces highp in fragment shader to mediump. It is disabled by default. You can enable it for experiment. Bug: b/184850002 Change-Id: I73980be4ad160eb1b17a3a3ecfc09f2e4aeb468c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815240 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill f34b40da 2021-04-06T17:56:48 Vulkan: Suppress draw-time push constant VVL warnings. VUID-vkCmdDraw-None-02698 VUID-vkCmdDrawIndexed-None-02698 VUID-vkCmdDrawIndirect-None-02698 VUID-vkCmdDrawIndirectCount-None-02698 VUID-vkCmdDrawIndexedIndirect-None-02698 VUID-vkCmdDrawIndexedIndirectCount-None-02698 VUID-vkCmdDispatch-None-02698 Bug: angleproject:5821 Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi aac1b494 2021-03-26T21:52:30 Vulkan: Remove spam output regarding pipeline cache The warning regarding pipeline cache not having been found in the blob cache is of little utility. Between emitting it once and not at all, concensus was on the latter. Bug: angleproject:4722 Change-Id: I6d6b2758035e8c5e880b77c5f5be84772cb58a18 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2788812 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 776c6015 2021-02-26T00:00:57 Vulkan: Call glslang at compile time With this change, the ANGLE translator immediately compiles the generated GLSL into SPIR-V with glslang and discards the source. This is in preparation for generating SPIR-V directly, by making the frontend and backend already able to digest it. This change also allows the expensive glslang calls to be parallelized, improving the following perf test by about 20%: LinkProgramBenchmark.Run/vulkan_compile_and_link_multi_thread Previously, the test was run as such in the Vulkan backend: Main Thread 1 Thread 2 Compile1 ---> Compile2 ---------------------> Translator Translator <--- <--------------------- Link glslang for shader1 glslang for shader2 Done With this change, it is run as such: Main Thread 1 Thread 2 Compile1 ---> Compile2 ---------------------> Translator Translator glslang glslang <--- <--------------------- Link Done glslang_wrapper_utils no longer interacts with glslang! A rename will follow. Bug: angleproject:4889 Change-Id: If4303e8ba0ba43b1a2f47f8c0a9133d0bee1a19a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2721195 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 9a79ee78 2021-03-22T17:56:28 Vulkan: Add A few other *-None-04584 VVL error to skip list If app uses textureLoad to fetch a texture level and mean time renders to the same texture but with different level, this will generate vulkan validation errors. Previously we are only skipping VUID-vkCmdDraw-None-04584, but it is necessary to skip all other-04584 VVL error that stem from other draw calls as well. Aztec ruins can run into VUID-vkCmdDrawIndexed-None-04584 on QComm GPU, for example. Bug: b/175584609 Change-Id: I2da6945415975350e36f533f007ae1e2a5feddfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2780563 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Amy Liu 1fb7f648 2021-03-18T16:17:25 Compression of the data from vkGetPipelineCacheData. The size of pipelineCacheData sometimes is greater than 64k which cannot be saved because of the Android blob cache limitation (single cache data size should be < 64k). Implement the compression to store more cache data. Re-land this patch before fixing the performance regression of big pipeline cache. Bug: angleproject:4722 Change-Id: I4bc05a88334c3e7e9e945d1a0877429db1750422 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2771840 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d1462228 2021-03-09T11:25:36 Vulkan: Use VK_EXT_multisampled_render_to_single_sampled Additionally, makes the emulation path not require independentResolveNone. This was only used to select the NONE resolve mode when the attachment format doesn't have either of depth or stencil aspects, but it's ok to specify the same resolve mode for both aspects even if one aspect is missing. Bug: chromium:1088005 Change-Id: Ifc37cbf5331145179c5927853b996a0d62b871ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743666 Reviewed-by: David Reveman <reveman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Nicolas Capens 135385a1 2021-03-19T00:09:31 Disable EGL_EXT_buffer_age for SwiftShader Vulkan Cuttlefish with SwANGLE failed to pass the android.graphics.cts. BitmapTest#testDrawingHardwareBitmapNotLeaking test, due to a timeout in dequeueBuffer (error = -110) during an EGL_BUFFER_AGE_EXT surface query. This change conservatively works around the issue by leaving EGL_EXT_buffer_age support disabled for SwiftShader. Further investigation is required to check whether this timeout can also occur with other Vulkan drivers, and if it can be addressed robustly. Bug: b/182521420 Bug: angleproject:3529 Change-Id: I54e3767e74bf922f273d8860f9f4cfc8b6589536 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2774030 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Nicolas Capens <nicolascapens@google.com>
Charlie Lao d5bc8a27 2021-03-17T18:21:35 Vulkan: Add VUID-vkCmdDraw-None-04584 validation error to ignore list Aztec ruins is using the same texture (but different level controlled by a uniform variable) for textureLod and rendering. This triggers vulkan validation error. This CL put it in the ignore list so that it can pass. Bug: b/175584609 Change-Id: I7623e7b448514b3c12268aa5fe154f4c2f59b059 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2770686 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 716b2cba 2021-03-12T14:46:53 Use bitset masks for active shader buffers. This switches the tracking for the uniform, shader storage, and atomic counter buffers to use bitset masks to determine where there are active buffers. This will make iterating these buffer sets faster. Also renames the limit for atomic counter buffers to be consistent with the other buffer types. Also applies the implementation limit to atomic counter buffer bindings. This fixes out-of-bounds access on some Linux platforms that expose a large number of bindings. Bug: angleproject:5736 Change-Id: Ice801645697592d1dda6aebf0cb69767594cc0c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757509 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten bbed8813 2021-03-05T17:40:27 Create GN arg to enable non-conformant features The GN arg angle_expose_non_conformant_extensions_and_versions is being added to control exposeNonConformantExtensionsAndVersions, which enables non-conformant features and extensions. In particular, this is being done to enable EXT_texture_buffer on devices that don't support all of the necessary formats since many Android games rely on this extension, such as "Special Forces Group 2", "Fortnite", and "PUBG". # Enables non-conformant extensions and features angle_expose_non_conformant_extensions_and_versions = false Users/vendors can now toggle the value with a GN arg, rather than a code change, to make it easier to test the conformant version of ANGLE with CTS, dEQP, etc. and/or app-compatibility. Bug: angleproject:5592 Change-Id: Icbf18b48a2751c03e277ae964e1ec278a43324cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2740643 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Ian Elliott 92db3c68 2021-03-10T15:09:15 Vulkan: Disable rotating damage rectangles on Android This fixes visual problems with Android games that use eglSwapBuffersWithDamageKHR(). In 90/270-degree cases, the damage rectangles are being double-rotated, leaving them 90-degrees out of alignment with the window. On Android, VK_KHR_incremental_present is built on top of the same platform code as eglSwapBuffersWithDamageKHR(). The platform code rotates all damage rectangles (assuming they are application-provided). Therefore, ANGLE should not also pre-rotate damage rectangles. Test: Black Desert Mobile Test: Grand Theft Auto: San Andreas Test: Extreme Car Driving Simulator Bug: b/181796746 Change-Id: I6510e7540bb00afc75863e8ae8a9ea3841d1641d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2744984 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Peng Huang b27740f3 2021-03-09T16:15:15 Revert "Vulkan: Support EXT_sRGB_write_control" This reverts commit 6073af536cf627742696823edc82c9b0a481a8bc. Reason for revert: crbug.com/1186140 Original change's description: > Vulkan: Support EXT_sRGB_write_control > > Implement support for EXT_sRGB_write_control. This extension > requires VK_KHR_image_format_list to be supported. > > The spec requires this functionality to work with glBlitFramebuffer > as well but support for that will be added in a follow up change. > As such, this extension is only exposed in non-conformant mode. > > Bug: angleproject:5075 > Tests: SRGBFramebufferTest.*Vulkan* > Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5075,chromium:1186140 Change-Id: Ib0d4d60fe7434fb950f99db2c210aab9af7d2d0e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743663 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
Mohan Maiya 6073af53 2021-03-08T11:21:31 Vulkan: Support EXT_sRGB_write_control Implement support for EXT_sRGB_write_control. This extension requires VK_KHR_image_format_list to be supported. The spec requires this functionality to work with glBlitFramebuffer as well but support for that will be added in a follow up change. As such, this extension is only exposed in non-conformant mode. Bug: angleproject:5075 Tests: SRGBFramebufferTest.*Vulkan* Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amy Liu 0ee360de 2021-03-05T06:02:25 Revert "Compression of the data from vkGetPipelineCacheData." This reverts commit cc5083e071e9e0663979c02376e7848c7de11765. Reason for revert: Re-land this patch after fixing the performance regression of big blob cache (discussed in angle issue 4722). Original change's description: > Compression of the data from vkGetPipelineCacheData. > > The size of pipelineCacheData sometimes is greater than > 64k which cannot be saved because of the Android blob cache > limitation (single cache data size should be < 64k). > Implement the compression to store more cache data. > > Bug: angleproject:4722 > Change-Id: I435b086d70d0e6378f1141464ae2bafbe076f193 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2631511 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:4722 Change-Id: Ie4de10eabf5cd8f0b4748e2c1a4c3ab6b8ea092c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2739098 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>