src/libANGLE/renderer/vulkan/vk_renderer.cpp

Branch


Log

Author Commit Date CI Message
Sean Feng 7280d3d1 2025-10-14T09:56:58 Turn off preferSubmitAtFBOBoundary and add early submit logic Disabling preferSubmitAtFBOBoundary for MALI GPUs and submit pending commands at the draw call time if the number of write-commands in the current render pass reaches a threshold to avoid delaying the submission too much. Bug: angleproject:447444701 Change-Id: I413a4beb7147afd4f064286433a76014b19a49c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6994438 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Sean Feng <Sean.Feng@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand c1ae67dc 2025-08-18T17:26:21 cl/vk: Introduce Int64 Atomic support Checks for VK_KHR_shader_atomic_int64 and enables/reports the following if supported: cl_khr_int64_base_atomics cl_khr_int64_extended_atomics Bug: angleproject:447192709 Change-Id: I47102efd3e269d518558993f6068bfc4f9dd79b6 Signed-off-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981099 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 80130da0 2025-10-01T14:53:23 Vulkan: Enable recycleVkEvent on swiftshader Given that no GPU has reported that vkCreateEvent() + vkDestroyEvent() has more overhead than vkCmdResetEvent(), we will keep the recycleVkEvent feature flag off on all major hardware. Enable the recycleVkEvent feature on swiftshader so we can test the VkEvent recycle code path. Bug: b/440066521 Change-Id: I0eb30ea9a01e287664effa33cef5227f9f438a56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7004937 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Gowtham Tammana ea35293a 2025-04-14T15:52:02 CL/Vulkan: Dump commandstream on request Dump the command stream to stdout when feature flag `debug_cl_dump_command_stream` is enabled. Bug: angleproject:446112158 Change-Id: I58ea7eec4c842aee382568c7f41c99a242d29680 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6975004 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Mohan Maiya b276d1f8 2025-10-03T08:56:54 Vulkan: Add supportShaderPixelLocalStorageAngle feature Don't expose GL_ANGLE_shader_pixel_local_storage extension for Samsung Bug: angleproject:386749841 Change-Id: Ia22a6e8d8625db2abc7e7e9816ac34b7a7dec92c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7006000 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 51fcd399 2025-10-03T10:39:14 Revert "Vulkan: Suppress buggy VU" This reverts commit a83d674ed6b9096a5c5b1f3e3924aaa340bd3867. Reason for revert: Buggy VU was disabled in VVL Original change's description: > Vulkan: Suppress buggy VU > > Bug: angleproject:448630613 > Change-Id: Ibccc4fbbe6257a3b96f5ccb112fec866cc2c3efe > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7003828 > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:448630613 Change-Id: I19ebc3cb83d9ceefcfbbb92df0a0e1bde4ff7a36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7007012 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya 7b4ff0b2 2025-10-01T16:30:47 Vulkan: Updates to onFramebufferBoundary 1. Rename to the more appropriate onFrameBoundary 2. Add method to renderer for better encapsulation 3. When being moved to the background some apps unMakeCurrent the contexts and exit without calling other frame boundary APIs. Handle such usecases by treating ContextVk::onUnMakeCurrent(...) as a frame boundary Bug: angleproject:386749841 Change-Id: Ic2a8ecb631d132d99f8508f45f3b454c49f6624e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7004936 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jisun Lee b152eb30 2025-09-12T21:20:08 Vulkan: Refine conditions to force submit immutable textures To minimize unnecessary submissions, make the activation conditions for forceSubmitImmutableTextureUpdates feature more precise. This also enables the feature for Samsung devices. Bug: b/444728814 Change-Id: Idaf6b36596752f55ec6ba0ca1e4ff516f3a280df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6945861 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi a83d674e 2025-10-01T12:42:48 Vulkan: Suppress buggy VU Bug: angleproject:448630613 Change-Id: Ibccc4fbbe6257a3b96f5ccb112fec866cc2c3efe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7003828 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yiwei Zhang ba5db43c 2025-09-27T08:51:25 Vulkan: support MESA PanVK compatibility Naming wise: 1. isARMProprietary: ARM Mali DDK 2. isMesaPanVK: MESA PanVK Compatibility wise: 1. No behavior change for ARM proprietary driver. 2. Gone through each isARM check and update to isARMProprietary for those not applicable to MESA PanVK. 3. Fixed some isMaliJobManagerBasedGPU check which assumes the ARM prorietary driver. 4. Enabled doubleDepthBiasConstantFactor for MESA PanVK. Bug: b/399142853 Bug: b/447647367 Test: no unexpected regressions in dEQP-EGL.* and dEQP-GLES* Test: dEQP-GLES3.functional.polygon_offset.* pass Change-Id: I8f830632b4caf2e63a3ae87e15825e21476bf595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6992252 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yiwei Zhang <zzyiwei@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu 020c8ea3 2025-09-26T12:35:25 Disable convertLowpAndMediumpFloatUniformsTo16Bits on non-ARM devices It is unknown if other GPUs need this explicitly 32-bit to 16-bit casts, and the performance impact of this feature needs to be verified across different GPUs. Bug: b/405795981 Change-Id: I1b450aea58d6f4a20eddac5c9edceb4ebac4d999 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6990532 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 6218bbd4 2025-09-26T12:20:39 Vulkan: Make min submit command count dynamic * Turned the constant submit count threshold to a variable that can be set for different devices independently. * Added feature flag to enable forcing submission for certain GL commands, such as Clear and Invalidate. * If disabled, it would treat all commands the same and submit at the count threshold without exception. Bug: b/422507974 Change-Id: Ib13d36adfdcf75aa865dafadc279287f4a4bd1c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6990531 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 1f40285c 2025-09-24T11:54:44 Vulkan: Bypass buffer for VA if Bind*Buffers2 Due to added support for BindVertexBuffers2 and BindIndexBuffer2, there would be no need to allocate a buffer for vertex arrays via getBufferForVertexArray() if the related features are supported. It should be possible to directly reference the original buffer and the proper offset instead without errors. * The buffer handles and offsets in VertexArrayVk now get the original buffer handle and offset instead of using getBufferForVertexArray(). * getBufferForVertexArray() will now be used only when the following feature is disabled: * useVertexInputBindingStrideDynamicState * (which is used as condition for vkCmdBindVertexBuffers2()) * Renamed the function for index buffer: getIndexBufferForVertexArray() This will be used when the following feature is disabled: * supportsMaintenance5 * (which is used as condition for vkCmdBindIndexBuffer2())) * Moved the rest of the code in getBufferForVertexArray() to ~Impl(), which is used by both the functions above. * Removed redundant condition from the vertex input binding stride dynamic state feature. Bug: chromium:40059200 Bug: angleproject:394337110 Change-Id: I665611f92058048a9778aa4b823fabfad7c96c84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6980316 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 24fdc63a 2025-09-24T11:52:30 Vulkan: Disable recycleVkEvent Until we figure out whats causing VkEvent leak, disable the recycleVkEvent feature for now. Bug: b/440066521 Change-Id: I1b56554e8986b7113b12280d30cce2aae54b9589 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981088 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Amirali Abdolrashidi dd51c3e5 2025-09-16T00:03:20 Vulkan: Expand usage of BindVertexBuffers2 * bindVertexBuffers2() can now be used when vertex input dynamic state is enabled. * Since dynamic vertex input already sets the strides, there is no need to add the strides to bindVertexBuffers2() anymore and passing in nullptr should work. * Added the following token: BindVertexBuffers2NoStride * This is used to avoid the condition check overhead for the draw calls taking this code path. * Removed the condition of vertex input dynamic state from using vertex input binding stride. * The following pipeline flags can now be added to a pipeline object at the same time: * VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE * VK_DYNAMIC_STATE_VERTEX_INPUT_EXT * Changed the condition of positive vertex attribute count to any vertex attributes to add input binding stride flag to the pipeline. Bug: chromium:40059200 Change-Id: Id3be458580da0ca46db554bf292f240dae4d5097 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6944912 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya a8ed5bd1 2025-09-20T16:38:48 Vulkan: Disable convertLowpAndMediumpFloatUniformsTo16Bits for Samsung Bug: angleproject:405795981 Change-Id: Ib71a5121ab71df57cd30ece8698694f11f91c563 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6970446 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mohan Maiya 50927761 2025-09-19T14:45:24 Vulkan: Add externallySynchronizePipelineCacheAccess feature Acquire renderer's pipeline cache mutex IFF externallySynchronizePipelineCacheAccess feature is enabled Bug: angleproject:386749841 Bug: angleproject:445240187 Change-Id: I91804e2713944768a5379adc3113ce7632a17111 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6969910 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Jeff Vigil 61c452ba 2025-09-03T17:23:37 Vulkan: Disable supportsShaderFramebufferFetch for Samsung Disable framebuffer fetch extensions for Samsung. Bug: angleproject:445083429 Change-Id: I89828b148ea1ac8ad2d59626e15d5f9358fe5b3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962954 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuxin Hu f28c8029 2025-09-17T16:02:40 Re-enable the feature that transforms float uniforms to 16 bits Re-enable the feature after suppressing the WebGL conformance tests: https://chromium-review.googlesource.com/c/chromium/src/+/6937051. Temporary disable this feature on PowerVR while the bugs are under investigations. Bug: angleproject:405795981 Bug: angleproject:443302350 Bug: angleproject:443302625 Change-Id: I8263bd6fcf120b7bed8211f0439962be40afd992 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962958 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 8e7fa804 2025-09-15T14:06:38 Check shaderFloat16 feature support for enabling Float16 in Spirv According to VK_KHR_shader_float16_int8 device extension spec: "It introduces two new optional features shaderFloat16 and shaderInt8 which directly map to the Float16 and the Int8 SPIR-V capabilities." We should check if the shaderFloat16 is supported before we generate SPIRV that declares SPIR-V Capability Float16 Bug: angleproject:405795981 Change-Id: Ied7edfbed81ed5b862907c9bb1e772cb43acdb8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6919673 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Xiang Wang <xwxw@google.com>
Shahbaz Youssefi f0370a41 2025-09-09T19:44:57 Vulkan: Use the GENERAL layout if VK_KHR_unified_image_layouts This lets ANGLE simplify synchronization by generally being able to use memory barriers instead of listing image barriers separately. Although the more specific access masks from VK_KHR_synchronization2 is possibly necessary for some hardware to work optimally (VK_ACCESS_2_SHADER_SAMPLED_READ_BIT in particular). It also lets ANGLE optimize a very specific scenario. Take an image used in the following scenario: 1. Copy to image in a transfer operation 2. Sample from image in the fragment shader of render pass 1 3. Sample from image in the vertex shader of shader pass 2 When GENERAL is not used, there's a layout transition between steps 1 and 2, changing the layout from TRANSFER_DST to SHADER_READ_ONLY_OPTIMAL (with dst stage == fragment shader). Later, at step 3, we need to make sure the vertex shader at least waits for this layout transition to finish... a dependency which is not expressible in Vulkan: * There cannot be a dependency to step 1, because the layout transition is not necessarily done * There is no stage mask that signifies the end of a layout transition. Without GENERAL, ANGLE has no choice but to issue a fragment->vertex dependency before step 3, serializing render pass 2's vertex pass with render pass 1's fragment pass on tilers. When using the GENERAL layout instead, step 3 can issue a transfer->vertex memory barrier, including using a VkEvent, parallelizing the two render passes. The above optimization is possible after this change, but not yet implemented. Bug: angleproject:422982681 Change-Id: Ieaae6f92b8b7d1e9c80c810a759c64b1e81d2dc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6936485 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya 60f694c6 2025-09-10T11:55:58 Vulkan: Bugfixes in preferGlobalPipelineCache 1. per-program pipeline cache was being unconditionally initialized during warmup 2. mergeProgramPipelineCachesToGlobalCache should be disabled when preferGlobalPipelineCache feature is enabled Also, prefer use of global pipeline cache for Samsung. Bug: angleproject:386749841 Change-Id: Ifd66ef8c6d10b8a5ffd3c002239e8747f469ba47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6936119 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Amirali Abdolrashidi 66ca0f48 2025-09-11T11:41:39 Vulkan: Extend BGR565 preference to Mesa * Updated the availability of preferBGR565ToRGB565. Bug: b/409867243 Change-Id: Iecda303bb13c2d99a78d326a192759640008eeb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6937661 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi f27d1719 2025-07-29T16:41:27 Vulkan: Prefer BGR565 for RGB565 if enabled Some platforms exhibit better performance when using BGR565 instead of RGB565, including when loading buffer data to the image. This change allows such platforms to use a BGR565 image in the backend instead of an RGB565 image when using Vulkan, when the corresponding flag is enabled: preferBGR565ToRGB565 * Updated the formats to include B5G6R5 as a fallback to R5G6B5, which would be triggered when the corresponding feature flag is enabled. * The only exception would be when the surface is being initialized as R5G6B5. * In addition, this format will not be subject to forced format fallback. * Added VVL skip that specifically does not allow undefined format for border color for certain formats, including B5G6R5 if flag enabled. * Some suites with RGB565 tests will be run with preferBGR565ToRGB565 enabled on SwS to provide better test coverage. Bug: b/409867243 Change-Id: Ibb8c71b024ba318862f62ded8abd2d07835e8a40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6799253 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi 5c1ba222 2025-08-22T14:59:58 Vulkan: Add feature flag preferBGR565ToRGB565 * This flag will let certain platforms to prefer using BGR565 instead of using RGB565 for better performance in a follow-up change. Bug: b/409867243 Change-Id: If89eea1e801ca9d1c10021213862e967231a7343 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876528 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 166c9e23 2025-09-05T12:52:38 Vulkan: Separate barrier data into its file vk::Renderer includes a modified copy of kImageMemoryBarrierData. When using VK_KHR_unified_image_layouts, even more of this data is modified based on device features. Leaving kImageMemoryBarrierData in vk_helpers.cpp runs the risk that it's accessed directly instead of using the copy in vk::Renderer. Bug: angleproject:422982681 Change-Id: I7e288ef0ac519c53842214fe934ba7b2474e1f9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6927350 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 7d1e4e16 2025-09-08T12:14:57 Manual Roll vulkan-deps from 5107e9eef1bc to af8c2ea541d3 https://chromium.googlesource.com/vulkan-deps.git/+log/5107e9eef1bc..af8c2ea541d3 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/f6940d2b8a9dc6de805c48eb3e8bafd65118b25c..337fdb6a284fe7f7e374a14271f8e20e579f3263 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/dc22b23433ab3a390b4c75710836691fdb6f11f4..af5376ef7061716a95ab2bc321aeae4f77958a28 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 angle-team@google.com,yuxinhu@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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:443133082 Tbr: yuxinhu@google.com Change-Id: I577cc5555b99aa1f903313a83d96ed755634dd79 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923245 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
hoonee.cho e9a30817 2024-10-28T14:54:38 Vulkan: Support vulkan physical addr in vk_helpers - Add extraAllocationInfo for physical addressing in AllocateBufferMemory/AllocateImageMemory - Add getDeviceAddress which calls vkGetBufferDeviceAddressKHR API to get device address In CL, All the physical addressing supports are enabled when the runtime flag "supportsPhysicalAddressing" is set. Bug: angleproject:442950569 Change-Id: I1658062b3f031b3d55923937947cece0c1b67d67 Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916340 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
hoonee.cho acb59de1 2024-10-26T13:13:34 Vulkan: Add VK_KHR_buffer_device_address feature Add to check VK_KHR_buffer_device_address is supported to query a 64-bit buffer device address value for a buffer, which can be used to access the buffer memory via the PhysicalStorageBuffer Bug: angleproject:442950569 Change-Id: Ic86f448c1cb5cef40757406d0ce6259838f77fdb Signed-off-by: hoonee.cho <hoonee.cho@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916339 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi fee5826f 2025-09-05T11:23:23 Vulkan: Enable VK_KHR_unified_image_layouts Functionality of the extension is not used by this change. Bug: angleproject:422982681 Change-Id: I68c8b93e69eb47b1d4287edad105514edd36dfcd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918517 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu cb6b73d2 2025-09-05T10:37:28 Temporarily disable FP16 float uniform transform feature Some webgl_conformance_vulkan_passthrough_tests are failing with the shaders generating 16-bit for lower precision uniforms. Temporarily disable the feature while investigating the root cause. Bug: chromium:443182226 Bug: chromium:443182234 Bug: angleproject:405795981 Change-Id: I62850f5dc979912a0605edb1aea5b74774b4421d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918101 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
angle-autoroll 1c275402 2025-09-04T12:38:29 Roll vulkan-deps from 8415cc875465 to 5107e9eef1bc (8 revisions) * Skipped some WRITE-AFTER-READ hazards related to the following: * vkCmdDraw() -> vkCmdCopyImageToBuffer() * vkCmdDrawIndexed() -> vkCmdCopyImageToBuffer() https://chromium.googlesource.com/vulkan-deps.git/+log/8415cc875465..5107e9eef1bc Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/3289b1d61b69a6c66c4b7cd2c6d3ab2a6df031e5..9d764997360b202d2ba7aaad9a401e57d8df56b3 https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/345804025b4cd32ff6e1959cc6c0280927c2e9dd..055b25c02fa80cdcca77fcf94ab64a02f02d9199 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/44cf554790020ee44355dde75f0aff79141cab3c..f6940d2b8a9dc6de805c48eb3e8bafd65118b25c https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/a528f95dc2f92bdd83c0c32efe2d13c806428c9d..34edde1191548c51cf4958f2dc6772bf7f76c8cd https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/54e4c34d401b5b4c5abc5dd04804f7b02a8bc0c0..dc22b23433ab3a390b4c75710836691fdb6f11f4 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 abdolrashidi@google.com,angle-team@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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:443095908 Tbr: abdolrashidi@google.com Change-Id: I305b9dc0089ac58be610b99cbf61112c33a03d7d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916334 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu c1cdc2b5 2025-08-22T15:23:58 Transform SPIRV to use 16-bit float for lower precision uniforms This change adds a ShCompileOption flag transformFloatUniformTo16Bits. The flag is turned on in vulkan backends where VK_KHR_16bit_storage extension is supported, and uniformAndStorageBuffer16BitAccess feature is supported. When the compiler flag is turned on, in the generated SPIRV, float data types in mediump and lowp uniforms are transformed from 32-bit to 16-bit. The 16-bit float uniform data is converted to 32-bit with OpFConvert instruction upon loading in SPIRV, this is to minimize the changes in OutputSPIRV.cpp. The converted variable is decorated with RelaxedPrecision, so that SPIRV compiler should be able to treat the converted variable as 16 bits, and the hardware can still benefit from reduced precision floats. The frontend is also notified such SPIRV shader changes by setting the isFloat16 bit in CollectVariables() step, and the frontend will transform float uniform data from 32-bit to 16-bit before storing the data into memory. That way, the uniform data that SPIRV shader reads matches with the uniform data type transformed in the SPIRV shader. This change also updates some test code to allow relative 2^-10 precision wiggle room for mediump uniform floats. This is valid according to spec: https://developer.arm.com/documentation/102502/0101/Shader-precision Bug: angleproject:405795981 Bug: angleproject:440941211 Change-Id: I05db7f5ef744df513fbad87cfed8aa173890ec26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851560 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 6888dfb1 2025-09-03T13:40:33 Vulkan: Fix missing vkGetImageSubresourceLayout2EXT ... with angle_shared_libvulkan=false Bug: angleproject:352364583 Change-Id: I6c81aefc6b074d45103a514ddd6d55192c2f660b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6912583 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shyam Manohar e842b5f8 2025-05-06T14:38:27 CL/Vulkan: Zero-copy support added for CL Buffers - Used VK_EXT_external_memory_host and VK_KHR_external_memory extensions - Added interfaces to CLBufferVk class for validating zero-copy ability - Added logic in CLBufferVk::create to use zero-copy if eligible - Added new HostExternalMemory class to provide utility functions - Added VkPhysicalDeviceExternalMemoryHostPropertiesEXT for querying Tests-Passing (having usage of CL_MEM_USE_HOST_PTR): - ocl_cts.test_api - ocl_cts.test_basic - ocl_cts.test_buffers - ocl_cts.test_mem_host_flags Bug: angleproject:441471275 Change-Id: I296e709a4f67911dcd6d0ae89750e8e0262625f4 Signed-off-by: Shyam Manohar <s.manohar@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892624 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Shahbaz Youssefi 1ed999ea 2025-08-25T16:02:01 Vulkan: Move sampler cache to share group The sampler cache (and the adjacent yuv-conversion-info cache) were in vk::Renderer, but they were not thread safe. Bug: angleproject:440364873 Change-Id: I2dc034f2db400f680ca91a9fde509d90f90c957e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6870736 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Jonghyuk Eun cdf428a2 2025-04-01T10:24:08 CL/VK: Update Samsung preferred/native vec widths Update CL_DEVICE_PREFERRED_VECTOR_WIDTH_* and CL_DEVICE_NATIVE_VECTOR_WIDTH_* for Samsung. The values may vary depending on the vendor. Updating only the values for SAMSUNG here. Bug: angleproject:406022413 Change-Id: Iad575298a11cfb41e620ab9cfd5f970eb6ea0b55 Signed-off-by: jh.eun <jh.eun@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6386421 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tom Sepez 25390156 2025-08-21T00:13:19 Suppress unsafe buffers on a file-by-file basis in src/ [1 of N] In this CL, we suppress many files but stop short of actually enabling the warning by not removing the line from the unsafe_buffers_paths.txt file. That will happen in a follow-on CL, along with resolving any stragglers missed here. This is mostly a manual change so as to familiarize myself with the kinds of issues faced by the Angle codebase when applying buffer safety warnings. -- Re-generate affected hashes. -- Clang-format applied to all changed files. -- Add a few missing .reserve() calls to vectors as noticed. -- Fix some mismatches between file names and header comments. -- Be more consistent with header comment format (blank lines and trailing //-only lines when a filename comment adjoins license boilerplate). Bug: b/436880895 Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi fee2bf73 2025-08-25T15:54:50 Vulkan: Limit EGL_NV_context_priority_realtime to Android Device creation fails on Linux when a REALTIME queue is requested, likely due to permission issues. Bug: angleproject:397474813 Change-Id: I0451db1dac9cbf2795439b251274f1a8057cbd6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6880530 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Panfeng Hou d65058be 2025-08-18T11:01:11 Vulkan: Add support for GL_EXT_fragment_shading_rate_primitive Add support for built-in GL_EXT_fragment_shading_rate_primitive and tests. Bug: angleproject:397255625 Change-Id: I0f37a87a73e869a91e39402f01e53166b359ec3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6850353 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxiang Qian 51cffa97 2025-08-13T14:23:51 Implement EGL_NV_context_priority_realtime In this extension, new attribute value EGL_CONTEXT_PRIORITY_REALTIME_NV is accepted for EGL_CONTEXT_PRIORITY_LEVEL_IMG. In ANGLE, this extension should depend on VK_EXT_global_priority and VK_EXT_global_priority_query. The implementation of creating device queue is also modified for this new attribute value. New end2end test is added to check if this new attribute works. Bug: angleproject:397474813 Change-Id: I68316fe371f5a495dbc78b106fc89787be18e086 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857673 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Raja  Wasim Husain 8ef76b6a 2025-08-04T12:34:17 CL/Vulkan: cl_khr_external_memory extension (pt.2) - Make this extension visible if Vulkan implementation support features supportsExternalMemoryFd and/or supportsExternalMemoryDmaBuf - Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and clEnqueueReleaseExternalMemObjectsKHR - Updated clCreateBufferWithProperties to handle external memory file descriptor. Bug: angleproject:378017028 Change-Id: I1751982c8e9b2cd07b7e251cc54db5dcd1bcda20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843980 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian 1f83d739 2025-08-01T16:59:11 Expose VK_EXT_global_priority and VK_EXT_global_priority_query To implement EGL_NV_context_priority_realtime, VK_EXT_global_priority and VK_EXT_global_priority_query should be exposed. With these extensions, we can query supported global priority and set global priority for the Vulkan queue. Bug: angleproject:397474813 Change-Id: I83f9f19d46f3c81b02246aae2892f7a9c1a09d1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857671 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 9034e29b 2025-08-14T13:25:39 Vulkan: add a feature flag controlling float uniforms 16-bit transform Add a feature flag that will guard whether we want to transform mediump / lowp float uniforms from 32-bit to 16-bit in SpirV. The feature flag is enabled when VK_KHR_16bit_storage extension is supported, and uniformAndStorageBuffer16BitAccess vulkan feature is supported. The feature flag is initialized to false in this change. It will be turned on in a later change when it is being used. Bug: angleproject:405795981 Change-Id: I37c77270fbd391cc97f58890065b66faf77766c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6852395 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Hareesh Karada 7ad67712 2025-08-13T16:33:03 CL/Vulkan: Enable cl_khr_integer_dot_product extension - Enabled extension string and corresponding opencl_c features - Updated packed_cl_enums.json with three new enums - Enabled support for this extension in function clGetDeviceInfo - Add support for CL_DEVICE_OPENCL_C_FEATURES API query through clGetDeviceInfo corresponding integer_dot_product extension - Updated vk_features.json with new ANGLE Feature supports_shader_integer_dot_product - The changes in autogen files are generated by running the run_code_generation.py script Tests-Passing: ocl_cts: test_integer_ops integer_dot_product ocl_cts: test_compiler features_macro VK-GL-CTS:dEQP-VK.spirv_assembly.instruction.compute.opsdotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opudotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsudotkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsdotaccsatkhr.* dEQP-VK.spirv_assembly.instruction.compute.opudotaccsatkhr.* dEQP-VK.spirv_assembly.instruction.compute.opsudotaccsatkhr.* Bug: angleproject:433980939 Change-Id: Iae7a7753d0556beeb85c254c61a37a0d047df058 Signed-off-by: Hareesh Karada <hareesh.k@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785089 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 316e6831 2025-08-08T14:14:20 Vulkan: Support KHR versions of surface/swapchain_maint1 They are straight promotions of the EXT versions of the extensions. Bug: angleproject:430106352 Change-Id: I889dfda99d8ad35de1672914e7cc73b2879be6a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6832392 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi bafe39e2 2025-07-14T16:07:51 Vulkan: Use BindIndexBuffer2 when available This Vulkan API becomes available with VK_KHR_maintenance5. In addition to the original args, it also takes the index buffer size. * Added the necessary functions to use the following API: vkCmdBindIndexBuffer2KHR() * handleDirtyGraphicsIndexBuffer() now uses this API if maintenance5 is available. Bug: angleproject:394337110 Change-Id: I9a650ac5a033b449da05e0c226e2cfb6df74a75c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6735725 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Panfeng Hou 2ef85c24 2025-07-09T17:13:52 Vulkan: Add support for GL_EXT_fragment_shading_rate Add support for GL_EXT_fragment_shading_rate. Bug: angleproject:420310117 Change-Id: I7b368afc45baf8551c222b2569991269117d385b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6726817 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi fa90dac8 2025-07-30T14:04:58 Revert "Vulkan: Disable VK_EXT_host_image_copy on Fuchsia" This reverts commit d62db89e1753ece99633143faf4c87b2ff23f96c. Reason for revert: It's been years, hopefully VVL is updated by now. Bug: angleproject:8341 Original change's description: > Vulkan: Disable VK_EXT_host_image_copy on Fuchsia > > An old version of VVL is used, causing incorrect failures. > > Bug: angleproject:8341 > Change-Id: I0fc605616671343a49fed6ff02ecd67eea672dca > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4873440 > Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:8341 Change-Id: Ia7a8875b955a120c80d59f2ae7566648e055eedc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6804001 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi cd969c3e 2025-07-28T16:27:12 Vulkan: Disable clipCullDistance ext if GS/TS The extension GL_EXT_clip_cull_distance also interacts with geometry and tessellation shaders. These features are currently in development. * Added temporary flag: supportsClipCullDistanceInGSAndTS * Currently disabled by default * clipCullDistanceEXT can only be enabled if this feature is enabled, or if the device does not support geometry or tessellation shaders. * After the features become available, this flag can be removed. Bug: angleproject:42264006 Bug: b/415288635 Change-Id: Iac5c672fd980710519407c482bc95d2b0019aea2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6795025 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya 214a48c4 2025-07-16T12:42:18 Vulkan: add support for yuv resolve with transient image Add support for the YUV_target extension in cases where the implementation supports VK_ANDROID_external_format_resolve without supporting nullColorAttachmentWithExternalFormatResolve. Bug: angleproject:386749841 Tests: ImageTest*YUV* Change-Id: Iebcb4f843b962f3d0d2f4e42db479902b6c1f849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6761834 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 9cd9a0d5 2025-07-18T10:28:12 Vulkan: Reformat VVL Error Message Remove the following members from the SkippedSyncvalMessage struct: const char *messageContents1 const char *messageContents2 Future VVL suppression message should use extraProperties list only. Bug: angleproject:391284743 Change-Id: I72ebaf86da667967681318dd69a181cc685f0805 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6769428 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Cody Northrop 03356f06 2025-07-10T19:21:04 Vulkan: Skip VK_KHR_maintenance9 warning A warning has been added about behavior that will change if VK_KHR_maintenance9 is enabled. Since we can't make this change until drivers support the feature, let's add warning that will fire when we do decide to turn it on. This CL: - Adds a feature for maintenance9 - Adds a VVL skip if isn't enabled - Updates our skip code to check for message IDs Test: Traces Bug: angleproject:429339330 Change-Id: I5763cbc5f343ef165ff8810b9b60b8c809075b8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6724905 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 68fa8169 2025-07-09T18:02:16 Vulkan: Reformat VVL error message Remove the VVL that is no longer observed on bots. Reformat the other VVL to use extraProperties only. Bug: angleproject:40644740 Change-Id: I57da1259754d5eba18c8c11385872b3ec9527e09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6719618 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jisun Lee 7b5a8096 2025-07-09T06:26:21 Vulkan: Enable varyingsRequireMatchingPrecisionInSpirv for Samsung Bug: b/430501085 Change-Id: Iac5061c5d33642af1e53a990487833c26df45b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6717687 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi 9e000857 2025-02-04T16:12:47 Vulkan: Utilize VkBufferUsageFlags2 for bufferview * Added the following struct to bufferview createInfo in case of VK_KHR_maintenance5 support: VkBufferUsageFlags2CreateInfoKHR * Limited VVL 08779 to platforms without KHR_maintenance5 support. Bug: angleproject:394353300 Change-Id: I46beac693cda3216afc497c8ed74cbf51b72e549 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231512 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov 10b7414f 2025-06-12T17:03:51 Vulkan: Do not skip VUID-vkQueueSubmit-pSignalSemaphores-00067 ... when "VK_EXT_swapchain_maintenance1" is disabled. Problem only happened in shared present mode and is now fixed by VVL: 69b41e6fbe16619526daa861444cbb3eb8fcedce layers: Do not report in-use error for shared present mode Bug: angleproject:408190758 Change-Id: I4453de01ee239a0cb4cfd0269adfcb283a00866b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6641915 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 5d63c8d5 2025-06-11T13:01:25 Reformat VVL error message Update the VVL error message to use the new format. Remove the unused VVL error. Bug: angleproject:42264926 Bug: angleproject:42263911 Bug: angleproject:42265079 Bug: angleproject:42264496 Change-Id: I151960942c1bbf346693f250ec57f01fa3432784 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634225 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi c39f4a5c 2025-06-05T15:35:06 Vulkan: Update border color assignment for stencil In texture border clamp, if the border color is assigned together stencil mode (both using glTexParameter()), its red component is used to set up a border color to be used in each backend: * (Set up in AdjustBorderColor()) In the Vulkan backend, this is used when updating SamplerDesc, which is then used later to set up the custom border color: * (VkSamplerCustomBorderColorCreateInfoEXT) According to the spec, in case of undefined format, integer border color, and stencil image, the implementation is required to use either the first or the second component of the custom color, although it is recommended to use the first. However, at the moment, only the first component is being populated, while using the second component is also valid. * Added feature: usesSecondComponentForStencilBorderColor * Added bit to SamplerDesc: mUsesSecondComponentForStencil * It is set based on the feature flag above and the texture format. * When setting the custom border color info, the second component will be used based on the above flag. * Added test suites to test this on ES31 and ES32: TextureBorderClampTestES3*.CustomBorderColorWithStencil* * Updated capture params for glTexParameterIuivEXT(). * Suppressed the ES32 version for the following: * P4 * Linux/NVIDIA (due to out-of-date driver) Bug: b/390710636 Change-Id: Ie50c19e8ea66da40dc8b8db49d7e622a582637a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6626416 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Xiang Wang e877e655 2025-06-02T17:02:36 Reland "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" This reverts commit 8c75960e034a09bad67ece528c99e202bed69b64. Reason for revert: retry dry-run without revert Bug: b/303441816 Original change's description: > Revert "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" > > This reverts commit f8f9847771fa86589da29527c806d89e6f92c7a9. > As the issue is no longer reproducible on a P25 device with > latest ANGLE. > > Bug: b/303441816 > Change-Id: Iae86b3f4e30609cd5b1aedb4293192b06be71919 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614157 > Commit-Queue: Xiang Wang <xwxw@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: b/303441816 Change-Id: Ib447a5af33bd17f891a8db99766fc8f275162a6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614164 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Xiang Wang <xwxw@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Xiang Wang 8c75960e 2025-05-30T16:06:54 Revert "Suppress VUID-VkRenderPassBeginInfo-renderPass-00904" This reverts commit f8f9847771fa86589da29527c806d89e6f92c7a9. As the issue is no longer reproducible on a P25 device with latest ANGLE. Bug: b/303441816 Change-Id: Iae86b3f4e30609cd5b1aedb4293192b06be71919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6614157 Commit-Queue: Xiang Wang <xwxw@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Serdar Kocdemir b1359277 2025-05-14T22:53:36 Declare lavapipe device type Fixes 'Unknown GPU architecture' warning when using lavapipe driver with guest side ANGLE enabled on the emulators. Also treats lavapipe similar to swiftshader for test coverage purposes. Bug: b/417791087 Test: run goldfish emulator with '-gpu lavapipe' Change-Id: I40002ce191aa49f08d887c066321c4d0c27f2738 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6547537 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu f000acf8 2025-05-28T12:37:20 Vulkan: Remove suppressed VVL errors that no longer applies on bots All the devices on bots support VK_ATTACHMENT_STORE_OP_NONE. To pass the bot, we no longer need to suppress the VVL errors that only occur on devices where VK_ATTACHMENT_STORE_OP_NONE is not supported. Remove the error messages from the suppression list. Bug: angleproject:42264496 Bug: angleproject:42265159 Change-Id: I47bfcb6cff77ae68b1755e8e0105411f31f713e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6598217 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Tingwei Guo ef29d42e 2025-05-22T15:52:49 Support ASTC decode mode extensions in ANGLE Added support for GL_EXT_texture_compression_astc_decode_mode and GL_EXT_texture_compression_astc_decode_mode_rgb9e5 in ANGLE. Also added corresponding end-to-end tests for ASTC decode mode queries, including ASTC decode mode queries and rendering with ASTC texture formats with different decode modes on GL_TEXTURE_2D works. Bug: angleproject:419403188 Change-Id: I0f2dced8468c4e25597740d1de346b2f699bb81e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6575285 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Yuxin Hu eafcbbf9 2025-05-27T11:24:17 Vulkan: Reformat VVL error message Remove the VVL skip messages that no longer apply. Set the messageContents1 and messageContents2 to nullptr for ease of clean up later. Bug: angleproject:399191283 Change-Id: I6d4477a6c401e6b7d2915b1fc574413be31fdc9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6594251 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 525757d6 2025-05-22T16:32:32 Vulkan: Reformat VVL Error Message Change the error message to use the extraProperties field. Set the messageContents1 and messageContents2 to nullptr for ease of clean up later. Bug: angleproject:394598470 Change-Id: I0b7aec0b7e9a6e5206c89caae712e76db3338c4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6581371 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu b4d39a07 2025-05-19T11:07:08 Reformat VVL Error Message Tests failed in this manual roll https://chromium-review.googlesource.com/c/angle/angle/+/5689521 no longer runs into the SYNC-HAZARD-WRITE-AFTER-WRITE VVL error. Remove the VVL error from the skipped VVL error list. Bug: angleproject:352094384 Change-Id: I8b0a4baebd7276fc6d42e0357a3b6f49adb0b4f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6564666 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu e6231b0f 2025-05-16T10:29:46 Reformat VVL Error Message catalyst_black trace no longer runs into the SYNC-HAZARD-WRITE-AFTER-READ VVL error mentioned in http://anglebug.com/42266390. Remove the VVL error from the skipped error list. Bug: angleproject:42266390 Change-Id: I7e3055e61632e1de42dc24233724f73beefef653 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6557942 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu b74a4714 2025-05-15T10:24:41 Reformat VVL Error Message diablo_immortal trace on swiftshader no longer runs into the SYNC-HAZARD-WRITE-AFTER-READ error mentioned in b/42266309. Remove the VVL error from the VVL error skip lists. Bug: angleproject:42266309 Change-Id: I53a5377ea26541a37dc251717d3f2d08f553a3a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6551848 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 6ba47bed 2025-05-13T12:44:06 Vulkan: Use GS input prim type for warmup pipeline For graphics pipeline creation, the primitive topology should be set in the input assembly state create info (unless for dynamic state). This can come from the primitive mode in ProgramExecutableVk (prepareForWarmUpPipelineCache()). Currently, the patch mode is used if there is a tessellation shader, and triangle strip otherwise. However, if there is a geometry shader without tessellation, this can lead to a VVL error on certain platforms if the primitive mode for the pipeline does not match the input primitive type for the geometry shader. * Updated the primitive mode in the above function for the case of geometry shader without tessellation shaders, to be set to the input primitive type of the GS. * This will be used later for graphics pipeline initialization for the input assembly state info (in case of vertex input). * (GraphicsPipelineDesc::initializePipeline()) * Removed the following VVL suppression: VUID-VkGraphicsPipelineCreateInfo-pStages-00738 Bug: angleproject:303219657 Change-Id: I8d804fd87438033071261a5002a4155e6d62d27c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6541872 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 74bf9527 2025-05-14T13:52:24 Reformat VVL Error Message diablo_immortal trace on swiftshader no longer runs into the SYNC-HAZARD-WRITE-AFTER-WRITE VVL error mentioned in b/42266309. Remove the VVL error from the VVL error skip lists. The trace does run into a different SYNC-HAZARD-WRITE-AFTER-WRITE error and another SYNC-HAZARD-READ-AFTER-WRITE error, which are already covered by two existing entries in the VVL error skip lists, and this change updates the comments accordingly. Bug: angleproject:42266309 Change-Id: I3466d8d8320750c7edef52c6629fb2dd377da284 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6548199 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu e2352b29 2025-05-12T10:55:39 Reformat VVL Error Message TraceTest.life_is_strange no longer runs into below VVL error: {"SYNC-HAZARD-READ-AFTER-WRITE", "type: VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, " "imageLayout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", "usage: SYNC_FRAGMENT_SHADER_SHADER_"}, Remove the VVL error from the skipped message list. Bug: angleproject:42266180 Change-Id: Iddaea23b3afd8bb6238caa6aaadc49eb8469da51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6534653 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu db33baf4 2025-05-09T14:13:08 Reformat VVL Error Message life_is_strange no longer runs into the SYNC-HAZARD-WRITE-AFTER-READ VVL error it used to, remove the VVL from the skipped VVL entries. The trace does run into another VVL error on Linux AMD GPU, update the comment. Bug: angleproject:42266180 Change-Id: I6010ca1540e1d8774992173c853b904c0b3bd117 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6534138 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu b729fb74 2025-05-08T11:35:46 Reformat VVL Error Message Test Texture2DTest.UploadThenVSThenNewRPThenFS/ES2_Vulkan no longer runs into the VVL error. Remove the VVL error from the skipped VVL message list. Bug: angleproject:42265925 Change-Id: I5d854b8b091847f136c8e57620f8dd8c72d59503 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6525049 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Cody Northrop 16b2bf5e 2025-05-06T16:23:24 Vulkan: Only expose ASTC HDR if 3D textures supported Not all hardware supports ASTC HDR for 3D textures. This CL adds a check for each ASTC HDR format, querying the driver for 3D support, and tracking it as a feature. We use that feature when deciding to expose GL_KHR_texture_compression_astc_hdr. Test: dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba Bug: b/407634958, b/416095435 Change-Id: Iaa6f26e247c7e6c7451f3d4eb8dd7175509bf45f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6515816 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi 5c441a53 2025-05-06T13:00:32 Vulkan: Prefer MSRTSS for QCOM devices The feature flag `preferMSRTSSFlagByDefault` was originally added to avoid allocating extra memory if the images are created with the MSRTSS flag by default. If it is disabled, the image will be recreated with the said flag only if it bound to an MSRTT framebuffer. * preferMSRTSSFlagByDefault is now enabled for QCOM driver versions beyond 0777.0. Bug: b/329911999 Change-Id: Iea72f864eac5ecfa97b5c99de5bd66ef09c54c0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6516037 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu fcfc9760 2025-05-06T11:26:40 Reformat VVL error message The test VulkanPerformanceCounterTest_ES31.TextureSampleByDrawDispatchDraw no longer runs into the VVL error it used to have. Remove the VVL error from the skipped VVL error list. Bug: angleproject:42265504 Change-Id: I8eff929524b3e1bd015d96db2cc45b2c8f331170 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6514411 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 7447e8ac 2025-05-06T10:33:47 Vulkan: Driver workarounds on Qualcomm Dynamic rendering is disabled on 512.800 due to crashes on some devices. Imageless framebuffers are disabled on 512.805, suspecting cause of crash on some other devices. Bug: chromium:415738891 Bug: chromium:415968761 Change-Id: I71f533c7954b628ce897ed1dac478aed119658e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6512663 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu c6e0448b 2025-05-05T10:49:32 Reformat VVL error message The SYNC-HAZARD-WRITE-AFTER-READ VVL error is no longer observed on TraceTest.special_forces_group_2, removed the error message from skipped VVL error list. The TraceTest.special_forces_group_2 now runs into a different SYNC-HAZARD-READ-AFTER-WRITE VVL error, on Linux AMD GPU. An existing entry in the skipped VVL error list already covers this error message. Reformat that entry by adding the extraProperties, and changing the messageContents1/messageContents2 fields to nullptr for ease of clean up later. Bug: angleproject:42264123 Bug: angleproject:397775556 Change-Id: I1681cd7f76dd2090e78584b08c25224d5b05d963 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6514289 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu ce795fa8 2025-04-28T15:31:25 Reformat VVL error message Set messageContents1 and messageContents2 fields to nullptr, for ease of clean-up in follow-up changes. Make the extra properties fields more specific. Bug: angleproject:42265363 Bug: angleproject:415382790 Bug: angleproject:415383266 Change-Id: I032bc82c6aeb16281c868778db827318fa833005 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6496650 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 18ec8824 2025-05-02T12:42:26 Vulkan: Exclude RADV from global cache preference * Added exception for AMD/RADV machines from the following flag: preferGlobalPipelineCache * (Due to no information regarding the effect of this flag on those platforms) Bug: b/411442610 Change-Id: Ifd9e2fe02e488d51cbb9e070106e86ac21e8533d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6509821 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 16e0dfd9 2025-03-20T10:59:26 Vulkan: Add feature flag to recycle VkEvent This CL adds a feature flag to enable/disable the VkEvent recycling. Given ARM prefers taking CPU overhead of creating and destroying VkEvent when last reference count to VkEvent goes away instead of the extra GPU overhead comes with vkCmdResetEvents, VkEvent recycling is disabled on ARM. Bug: angleproject:409441956 Change-Id: I288be6f7cfcbc4dd9c4701d20fba44349f25befc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6376784 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi a3b20796 2025-04-25T13:12:08 Vulkan: Add flag to prefer renderer pipeline cache * Added the following feature: preferGlobalPipelineCache * The renderer's pipeline cache will be used to create pipelines, including for warm-up. * mPipelineCache in the program is not saved when this flag is enabled. * Currently enabled for NVIDIA and AMD. * Impact on captured trace (w/ compiling inactive shaders) * Decrease in peak system memory usage on Windows/NVIDIA: * ~7600 MB -> ~3900 MB * Decrease in peak RES memory usage on Linux/NVIDIA: * ~7100 MB -> ~3600 MB Bug: b/411442610 Change-Id: I04929569f0f8d59a77c52505072faa0244ef1393 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6495155 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 9bcfb38f 2025-04-30T23:12:19 Vulkan: Disable MSRTSS on buggy qualcomm drivers Bug: chromium:413427770 Change-Id: I62499c3aa04f3786a0deb6afcaafb7976f2a6446 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6501621 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Neil Zhang e5680ba6 2025-04-14T17:43:07 Fix mInFlightCommands.empty() assert in CommandQueue destroy When initialize a higher priority shared Context, ANGLE internal call updateContextsPriority to submit previously flushed commands. This submission is not tracked by any Context. Add Renderer::mSubmittedResourceUse to record submitted queue serials not belonging to any Context to fix the assertion. Bug: angleproject:410996556 Change-Id: I7a91e47c0233832b8806637f295dffd1ff54f729 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6458623 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Neil Zhang <Neil.Zhang@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d392eeae 2025-04-22T10:54:13 Vulkan: Force host-image-copy for LUMA textures on ARM Bug: angleproject:42266771 Change-Id: I79a8fe14ba389195d5846261752be847bc13bcf4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6479371 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 691140da 2025-04-22T21:05:44 Vulkan: Do not skip VUID-vkQueueSubmit-pSignalSemaphores-00067 ... when "VK_EXT_swapchain_maintenance1" is enabled. Original problem is a VVL bug, introduced in: 62e9314e2eb9c58af42f6f1b613d200d5362598d layers: Track semaphore is in use by swapchain It was later partially fixed in: 88934ae6acf0c8b8ae169df9607e779ac4a70239 layers: Fix waiting on present fence did not have effect Bug is only fixed when using present fences (when "VK_EXT_swapchain_maintenance1" is enabled). Without present fences, VUID error still prints the following: Swapchain image 0 was presented but not re-acquired, so VkSemaphore 0x41c700000041c7 may still be in use and cannot be safely reused with image index 0. a) Use a separate semaphore per swapchain image. Index these semaphores using the index of the acquired image. Since problem only happens in a shared present mode, re-acquiring the image causing "VUID-vkAcquireNextImageKHR-surface-07783". It is also unclear from the Vulkan spec if the image may be re-acquired in shared present mode, but it is currently not necessary. When not using present fences, ANGLE tracks present semaphores by attaching submit serial to the previous present operation when same image is presented. This guarantees to use more than one present semaphore (in a shared present mode) and not to reuse semaphore with signal operation pending. This is more strict synchronization than what is suggested by the VUID error in the item (a). However, it is debatable if this is ANGLE's or VVL error. If it is not a VVL error, it at least should provide correct message of how to fix the problem in case of a shared present mode. Theoretically, ANGLE may fix this error by only using present semaphore for the initial present, and skip it for all subsequent present operations, since image is already shared with the presentation engine and present operation is only used for notification purposes. Bug: angleproject:408190758 Change-Id: Id0dc3c0efcba72e844ba6b2c241d0076f70fcd51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6480175 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f355e2b3 2025-04-15T18:58:25 Vulkan: Remove preferDriverUniformOverSpecConst This was practically true for every vendor on Android (where rotation matters). For Qualcomm, it was also true due to a bug in version checking and didn't seem to be causing any concerns. Where pre-rotation is supported, it is better to enable this feature to avoid excessive pipeline creation. This change removes the feature and makes sure ANGLE always uses uniforms for rotation instead of spec consts. While technically this may have an adverse effect on platforms that never need pre-rotation, the ability is retained for all vendors since pre-rotation is finding its way into more platforms and would likely eventually be needed everywhere anyway. Bug: angleproject:42265878 Bug: angleproject:42262166 Change-Id: I4b64c04da46db08cfdd44b60789b66d93d8e8b17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6459025 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi a9f2f87f 2025-04-15T13:46:34 Vulkan: Update version macros * Updated the deprecated version macros * VK_VERSION_MAJOR -> VK_API_VERSION_MAJOR * VK_VERSION_MINOR -> VK_API_VERSION_MINOR * VK_VERSION_PATCH -> VK_API_VERSION_PATCH * VK_MAKE_VERSION -> VK_MAKE_API_VERSION * Added a separate case for QCOM drivers in getVersionString(). * The major version is now OR-ed with 512. * (New drivers seems to have a major version of 512, which falls not within the major field, but the variant field, when using the VK_API_VERSION_x macros.) Bug: angleproject:42267006 Change-Id: Ic9b761d182ff49c3ede43c7bd14f366f945fbf36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6460682 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 49d0a332 2025-04-08T16:07:17 Vulkan: Remove ring buffer allocators * Removed the ring buffer allocator functionality from ANGLE: angle::RingBufferAllocator * Also removed the related common files. * (Pool allocators will be used at all times.) * Removed the placeholder functions from the pool allocator. * Removed the following BUILD flag: angle_enable_vulkan_shared_ring_buffer_cmd_alloc * Removed redundant line from ContextVk. Bug: b/410036490 Change-Id: I368fb93a66ddfd192018b09f65004a32339abd5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6442640 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shelly Wang ac8607a9 2025-03-27T16:46:21 Vulkan: Disable graphics pipeline on ARM due to performance loss ARM is investigating on Graphics Pipeline Library(GPL) on contents whose performance loss is unacceptable. Therefore, it's recommended to disable GPL until the problematic area gets fixed and the final performance data is acceptable. Bug: angleproject:404581992 Change-Id: I2bcb5f8bca3d64be0e947d7262a615ef867532ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6400174 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 1c0bcb06 2025-04-08T18:42:43 Reformat VVL error angleproject:42265363: dead_by_daylight hits the VVL error covered by another entry in the skip list. Move the dead_by_daylight comment above the other entry. angleproject:42265427: VVL error added to the skip list in this bug still occurs on blade_and_soul_revolution and FramebufferFetch* tests. Change the VVL error message to use the new formats: remove the messageContents1 and messageContents2, and add more extraProperties. Bug: angleproject:42265363 Bug: angleproject:42265427 Change-Id: Ie913a7345b9f16580507894edd4a2befa29e9418 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6442305 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov f798b0d2 2025-04-04T08:17:57 Vulkan: Remove enablePreRotateSurfaces feature Removed to simplify the code and to avoid the problem for which `presentSubOptimalReturnedOnTransformChange` feature was added. Platforms without the per-rotation support always have `VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR` as the `currentTransform`, so the code will perform the same as when the feature was disabled. Add `warmUpPreRotatePipelineVariations` to explicitly control per-rotation pipeline warm up. Bug: angleproject:42262166 Change-Id: I44f6c221c11105f01f62f62622987b1955bc58aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6433586 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov b77f8af7 2025-04-02T19:01:48 Vulkan: Ignore SUBOPTIMAL on Android without pre-rotate Android returns `VK_SUBOPTIMAL_KHR` when window orientation changes, while ignores size changes. When "enablePreRotateSurfaces" is disabled, each present will return `VK_SUBOPTIMAL_KHR` if `currentTransform` is not `VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR`, causing swapchain recreate on each swap. This behavior makes disabling "enablePreRotateSurfaces" on Android worse than suboptimal. New "presentSubOptimalReturnedOnTransformChange" feature is currently enabled only on Android for the reason described above. It may be enabled for other platforms in the future if required. Change also improves error handling, by moving `deferAcquireNextImage()` call right after the `queuePresent()`, before any other call that may fail. This will avoid repeated present of the same image if something fails after successful `queuePresent()` call. The `checkForOutOfDateSwapchain()` and `computePresentOutOfDate()` was combined into a single method to improve error handling and to simplify the code. Bug: angleproject:397848903 Bug: angleproject:42266082 Bug: angleproject:42262166 Change-Id: I7ba2389ad2ddafc0c77c3068cd85ac9b9251ccdd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6424753 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 127aec7e 2025-04-03T13:54:17 Vulkan: Remove VVL error skips that have been fixed Test: --gtest_filter='MemoryBarrierBufferTest.TransformFeedbackBitWriteThenCapture*' Bug: angleproject:42266506 Change-Id: I0261a26157f6e44d25e6631faec96a55e470ea66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6431825 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuxin Hu b8151923 2025-04-03T11:34:18 Vulkan: Remove VVL error skips that have been fixed Test: --gtest_filter='MemoryBarrierBufferTest.TransformFeedbackBitWriteThenCapture*' Bug: angleproject:42266506 Change-Id: I314ee10d9ee67f5871312d730f35c2232a9372b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6430466 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
angle-autoroll 92cb669b 2025-04-03T15:26:42 Manual roll vulkan-deps from 12ef946decd5 to 48f50085fcda (21 revisions) Suppress VUID-vkQueueSubmit-pSignalSemaphores-00067 due to https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/9840 Manual roll requested by ynovikov@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/12ef946decd5..48f50085fcda Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/e57f993cff981c8c3ffd38967e030f04d13781a9..c3d39de93955f884e443c39e9ffecf86e4aac883 https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/27e60d9cd9d68cfcb6ca597956a4e57ac330413b..9e702e25aa472c8528b49c874a3c03d514df1ede https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/8c88e0c4c94a21de825efccba5f99a862b049825..8e82b7cfeca98baae9a01a53511483da7194f854 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/056e3ed2c7ca7b30aa803685f806de7a2402aa85..4bd1536ed79003a5194a4bd8c9aa2fa17a84c15b https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/73d7d74bc979c8a16c823c4eae4ee881153e000a..b2fee806c378105400a1ed4bc4b63ee3c08ddc4e 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 angle-team@google.com,romanl@google.com,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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:408190758 Change-Id: I835d826a71590c788c29cecd7958951e5b648df8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6430461 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuxin Hu 9ee2c7e7 2025-04-02T16:01:45 Vulkan: Remove VVL error skips that have been fixed Bug: angleproject:42265220 Change-Id: I828f1d96a19efd0de9220b2168cfa9c3aab80912 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6427323 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu a625043f 2025-04-01T16:09:14 Vulkan: Remove VVL error skips that have been fixed Bug: angleproject:42265220 Change-Id: Ia2048817c6238031c83aaa237c6c88b0e9a9ebf9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6423550 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi bbf92d12 2025-03-21T12:43:14 Vulkan: Add workaround flag for extra submit fence This change is a workaround for some devices exhibiting a device-lost error related to the fence usage in the command batches when working with EGL sync objects, such as a cycle similar to below: - <Some GL work> - eglCreateSyncKHR() - glFlush() - eglDupNativeFenceFDANDROID() - eglDestroySyncKHR() - <More GL work> (The exact point of error and the reason for the device-lost remain unknown.) This change is meant to mitigate such errors on those devices if needed. However, for the rest, the feature will remain disabled. * Added a new feature flag: enableExtraSubmitFence * Modified the usage of mFence in CommandBatch * It is also used when enableExtraSubmitFence is enabled, even if there is an external fence. * When there is an external fence, this object is used to create an empty submission after the primary commands are submitted using the external fence. * Added the config to enable EnableExtraSubmitFence for the following suite: EGLSyncTest Bug: b/384477641 Change-Id: I05f8bdcc804967c4984416af802326d22afd7a46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6378778 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>