src


Log

Author Commit Date CI Message
Kimmo Kinnunen d4083c79 2025-01-31T15:06:36 Metal: Make ObjCPtr available to all modules Move ObjCPtr implementation to src/common/ObjCPtr.h, angle::ObjCPtr so that it's available also outside libANGLE. Bug: angleproject:393263506 Change-Id: I8ecd5632c7ae33ef4b409fc820fad229e91bc0ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219318 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Kimmo Kinnunen 4e5f2ca3 2025-01-31T14:30:05 Metal: Rewrite AutoObjCPtr as ObjCPtr Rewrite without WrappedObject base class, the base class only convolutes things and does not help. This way the class can be moved upwards in the software layers in subsequent commits. Fix the class so that it can be used with ObjCPtr<T> and ObjCPtr<id<P>> signatures, to resemble other smart pointers. Remove the Auto prefix, ObjCPtr should be relatable to other smart pointers such as unique_ptr. Bug: angleproject:393263506 Change-Id: Ia5a5728514b7f9182c2ec8380c04716e8b9d2351 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219317 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
angle-autoroll e9cda7f6 2025-02-06T08:01:49 Roll VK-GL-CTS from 48e7f3020f52 to 1177f7b7d556 (5 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/48e7f3020f52..1177f7b7d556 Includes manual merge to remove GN reference to deDefs_kc_cts.h 2025-02-04 lorenzo@khronosgroup.org Remove all references to KC-CTS and GTF 2025-02-04 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.4.1 into vk-gl-cts/main 2025-02-04 elima@igalia.com Add VK_KHR_video_maintenance2 tests 2025-02-04 lorenzo@khronosgroup.org Update external sources and use Vulkan 1.4.307 2025-02-04 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.4.1 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,cnorthrop@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: None Tbr: cnorthrop@google.com Change-Id: I881df1f09ca98c892a485c5a8368c3f6eda390f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6237566 Reviewed-by: Solti Ho <solti@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov c24468c9 2025-02-06T19:04:19 Fix "fallthrough annotation in unreachable code" in release d3d builds The same issue I ran into in https://crrev.com/c/6231111 but on d3d Bug: angleproject:394129077 Change-Id: I90faa01fa66c514162a1d5e4cbe56a2bfd85085e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6237859 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi 7263989e 2025-02-06T13:20:14 Vulkan: Fix VUID-vkBindBufferMemory-buffer-01444 Some platforms issue a VVL error regarding memory allocation for an external buffer. It seems to be due to the fact that the memory is not allocated as a dedicated memory for the buffer, whereas the buffer requirements (as reported in vkGetBufferMemoryRequirements2()) show that it requires a dedicated memory. This causes an issue when binding the buffer to the memory. This change explicitly sets the dedicated memory information for the external buffer, so the memory is regarded as dedicated and be able to be bound to the buffer without errors. * Added VkMemoryDedicatedAllocateInfo when calling to allocate memory for the external buffer (InitAndroidExternalMemory()). * Appended this structure to the extra allocation info via pNext. * Unsuppressed VUID-vkBindBufferMemory-buffer-01444. Bug: angleproject:394598758 Change-Id: I0d952cea204e528c23859c74909dbbb0751d0b65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6239029 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov 0ef55535 2025-02-06T15:40:28 FastVector::resize_down never increases capacity Note: this function is currently only called by SPIR-V code generation In particular, SpirvTransformer::transform() was bloated 8896 -> 9756 bytes due to ensure_capacity() getting fully inlined. After https://crrev.com/c/6236800 this makes a much smaller difference but this still probably makes sense as before this CL the only difference between resize() and resize_down() was an assertion. Bug: angleproject:394848869 Change-Id: If55a41d67e26a9bc1a30cb0012d1958faa734cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6238266 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov fb563c3e 2025-02-06T15:29:14 FastVector capacity increase is a function call FastVector::ensure_capacity() gets inlined in many places, but capacity increase is a rarely needed case. Move code to increase_capacity and make it a function call. This reduces the size of a release Android .so by ~14KB. Bug: angleproject:394848869 Change-Id: Iefb5fe894d8c8eaba2d251502925de453290bc31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236800 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Kimmo Kinnunen 1675d47f 2025-01-31T10:05:03 Metal: Remove incorrect AutoObjCPtr construct on T && The T && constructor and operator= were incorrectly marked up as "ownership transfer", clearing the source. However, there is no ownership transfer in the assignment, and the call sites only work due to the T source holding is never unretained directly. Consider correct sequence (T is NSMutableArray *): NSMutableArray *obj = [[NSMutableArray alloc] init]; AutoObjCPtr<NSMutableArray *> myHolder = std::move(obj); [obj release]; Since the construct was retaining, the correct operation would need a release on the original raw obj-c pointer. However, the T && constructor would clear out the raw obj-c pointer, and thus calling release on the original pointer would not be possible. Remove the T && constructor, and use just normal T constructor. There's no ownership transfer when constructing AutoObjCPtr -- it is a retaining operation. The constructor does need T &&, raw obj-c objects are just passed normally as pointers, T. Call sites keep their std::move()s, which are no-ops. When functions accepting obj-c pointers get changed to accepting AutoObjCPtrs, the move will start actually transferring the ownership. Bug: angleproject:393263506 Change-Id: I5847f2ec98ab372343d0d2559c92dee9a327e126 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219316 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 60a9320c 2025-02-06T14:31:43 Move unlikely path of MakeLengthOp to a function call This function gets inlined many times, adding 96 bytes of assembly to each caller such as angle::spirv::WriteStore etc. In total, this CL reduces Android release .so size by ~14KB Bug: angleproject:394848869 Change-Id: Ief364116fd9b881f9c0dfefb1ca5005282bf57ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236799 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 7370bb57 2025-02-04T13:19:37 UNREACHABLE -> __builtin_unreachable() in release clang builds This enables compiler optimizations such as reducing the amount of branching, see anglebug.com/394129077#comment1 Reduces .so size in an Android perf build by 0.4%. I spot checked a few differences and saw less branches (this will be causing a different behavior in UNREACHABLE branches) as well as more functions getting inlined (likely due to compiler heuristics due to less branches) Bug: angleproject:394129077 Change-Id: I23411ca7a49d3daf2a0621bfcc0b2523d4db4f5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231111 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
angle-autoroll 38aa0780 2025-02-05T10:01:12 Roll vulkan-deps from 430dae9cea66 to 4d67b5012a2f (34 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/430dae9cea66..4d67b5012a2f Manual suppression for new VVL errors: VUID-vkBindBufferMemory-size-01037 SYNC-HAZARD-WRITE-AFTER-READ for vkCmdCopyBuffer Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/0549c7127c2fbab2904892c9d6ff491fa1e93751..39766a06679bf5e4bc1e0339136f1b6a519fcec5 https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/c1c4712c75bc123dac21daea5dfffd416e103e59..5728a66537b23986135f50c465fcb282b0434da4 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/04b4a204aa501992ae85a207be1e200e195c98e1..9d07794bc955101c79cbd260233fcc65b9951cfc https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/39f924b810e561fd86b2558b6711ca68d4363f68..234c4b7370a8ea3239a214c9e871e4b17c89f4ab https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader/+log/0508dee4ff864f5034ae6b7f68d34cb2822b827d..fde0f9718bd60b49cf8efc80d3fb7a093c309ac0 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/c3dc948b0b960b3a01506b57a15ecee2a9e31bf2..e9d5ff418fd29381205b7617170a6d556bc6a10e 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,cnorthrop@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: b/394598758 Bug: b/394598470 Tbr: cnorthrop@google.com Change-Id: Id968b54695b441eb4d21a63c23885eda0f567b9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6233954 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jordan 4ce8b71e 2025-02-05T08:06:09 LSC updating angle License ids This is based on the existing id and the license file provided. Bug: b/358504615 Change-Id: I0f0956806f27f8bfed6589157b583d159a25a3d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232605 Owners-Override: Jordan Brown <rop@google.com> Auto-Submit: Jordan Brown <rop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Austin Annestrand 483be92c 2025-02-05T14:03:00 CL/VK: Cleanup old non-uniform restriction in CLDeviceVk Bug: angleproject:42267085 Change-Id: I5499324c89d0358c12b6ce2f6f0015547730fc8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235928 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Shahbaz Youssefi 93e99da3 2025-02-05T11:23:50 Vulkan: Fix bugs with varying precision fixer This transformation creates new variables and turns the original ones Private. There were a few bugs where some transformations referred to the replaced id (larger than the original index bound) and had wrong look up (where e.g. they would cache something based on the original id, then try to look it up with the replaced id). This change makes it such that where needed, both the old and new ids are given to the various transformations, so they can look up with the old id, but output instructions with the replaced id. Bug: angleproject:386749841 Bug: b/394299327 Change-Id: Ie6b3c3445c440417cbbffdd849a036abfc504fe2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235664 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Austin Annestrand bab3f9ab 2025-01-30T14:30:16 CL/VK: Cosmetic kernel arg updates - Move POD argument buffer init to kernel-init - Remove unused CLKernelVK members/types - Switch inside of setArg loop - Rename kernel members that best aligns to their resources Bug: angleproject:42267001 Change-Id: I837ceeceaf1ff903b67b7f100298d4a3159b97d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6220895 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 9c82e55a 2025-01-16T17:47:41 Vulkan: Make VkEvent for Buffer work with more general usage Before this CL, BufferHelper::mCurrentWriteAccess and mCurrentReadAccess, mCurrentWriteStages, mCurrentReadStages still track all accesses, regardless if it is tracked by RfCountedEvent or via PipelineBarrier. This is okay for very limited usage case, but becomes fragile when expand the event for general usage case. The problem is that you can not correctly tell which bits in mCurrentReadAccess is for pipelineBarrier and which is for Event, since event and pipeline barrier could have the same VkAccessFlags. Similarly problem exist for mCurrentWriteAccess. The reliable way is actually track pipeline barrier access and VkEvent access completely separately. This CL changes mCurrentWriteAccess, mCurrentWriteStages, mCurrentReadAccess and mCurrentReadStage to only contain bits that not tracked by VkEvent. For this reason, RefCountedEventWithAccessFlags wrapper class is added to wrap mCurrentWriteEvent and its associated VkAccessFlags. Bug: angleproject:360274928 Change-Id: I057484f0c3baa2739d56c3a75889eb88a647a65a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6210683 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 82e25a32 2025-02-03T15:07:33 Make all " < 0" error messages consistent Use the form: Error is due to reason: <error message> Bug: angleproject:392938089 Change-Id: I9e72858cf76a46ab874ffc211afdae1eb93ca05d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6225600 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Austin Annestrand da837830 2025-01-30T15:37:56 CL: Fix device queue query validation for 3.0 Was missing 3.0 check for device queue size. Since device queue support is optional for 3.0, device queue query (CL_QUEUE_SIZE) needed device queue support. Adding validation check for that here. Bug: angleproject:42267011 Change-Id: Ibc1d7e00f78df01f131f69047b1390b02b5fa780 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6220894 Reviewed-by: Gowtham Tammana <g.tammana@samsung.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov fb118e41 2025-01-22T13:26:31 Vulkan: Always defer acquireNextSwapchainImage() call This change is a preparation before the follow up EGL_WIDTH/EGL_HEIGH eglQuerySurface rework. There is no need to acquire initial swapchain image after surface initialization. Skipping ANI may speed-up apps startup in some cases. The operation is also removed from swap (in case of out-of-date swapchain) for consistency and as a preparation for the follow up change. Change also enables "perFrameWindowSizeQuery" for NVIDIA on Windows because of the "SurfaceDimensionsChangeAndFragCoord" test failure. Test fails because `vkQueuePresentKHR()` does not return `VK_ERROR_OUT_OF_DATE_KHR` when presenting old image size after the window resize, even despite that surface caps currentExtent has already new size. Issue is not permanent, and may "fix" itself if add few empty swap buffers before starting the test or do ANI in the initialize (which one will work depends on GPU). Above issue is observed on the driver 546.01 (currently used by bots). Old 531.68 and new 566.36 does not have this issue (tested on RTX 3060 Laptop). The 546.01 driver, however, fails on that same system even on the base CL (without this change). Bug: angleproject:153329980 Bug: angleproject:42264593 Change-Id: I261e1f573a6b892f1ba4282dd17f17289c2f4184 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6182599 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen bee34ea7 2025-01-30T18:39:00 Metal: Remove redundant AutoObjCObj template alias Some members were held with AutoObjCObj<T> and some with AutoObjCPtr<T *>. Use the latter. Bug: angleproject:393263506 Change-Id: I9d8d56e9ffe3281d5e9087de7959249cbb4b9bd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216872 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 81412e88 2025-01-30T16:46:26 Metal: Avoid using retainAssign() Use more native C++ name for assign: operator=. Bug: angleproject:393263506 Change-Id: Ia31a79fbb15474ba754034338340ef5c3ed6e8ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216871 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 49e2b5e2 2025-01-31T15:52:39 Support compiling without GetProcAddress Move GetProcAddress implementation next to the proc array. This way it is possible to not compile the implementation. Bug: angleproject:393513311 Change-Id: Ic9c9022ee74a7619bec25f1481fd9da68b14b119 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219320 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Shahbaz Youssefi 9c6af5ce 2025-02-04T22:50:01 Vulkan: Fix crash in SPIR-V transform with varying precision fix Bug: angleproject:386749841 Change-Id: I5743eb049dde6c8a093b175e857251bad9b2bc9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232948 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop aa94da02 2025-02-04T12:41:36 Revert "Vulkan: Bugfix in SPIRV entrypoint transformation" This reverts commit 9975e80b9d98a2158ae859b3f4eff7340baa540d. Reason for revert: Crashes on platforms with varyingsRequireMatchingPrecisionInSpirv Original change's description: > Vulkan: Bugfix in SPIRV entrypoint transformation > > Perform varying precision fixer transformation before > other shader-stage-specific transforms that could > potentially modify the interfaceList. > > Also enhance EXTBlendFuncExtendedDrawTest by enabling > additional config with VaryingsRequireMatchingPrecisionInSpirv > feature enabled > > Bug: angleproject:386749841 > Change-Id: Ife4a2f932415296f1565527e50a2b8646cd7697d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207741 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: mohan maiya <m.maiya@samsung.com> Change-Id: I07064136f962a7d73ce5c80289da300d474faa22 Test: professional_baseball_spirits trace Bug: b/394299327 Bug: angleproject:386749841 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6227993 Reviewed-by: Cody Northrop <cnorthrop@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov c2cb1603 2025-02-03T18:21:10 Perf tests: change fps limiter method to timestamp based Instead of using previous frames, target start_time + N * delta. This will result in a smoother playback when there is no hiccups. In case of a big hiccup, replay will be catching up by submitting frames without sleeps until it hits the timestamp, then submit at the target rate again. Bug: b/376300037 Change-Id: I481f1325867d53e911acd2d381bfda4c94adefc6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6226746 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Hans Wennborg 6808ef83 2025-02-04T10:57:18 Tests: suppress -Wunused-private-field warning The latest version of Clang warns about an unused member variable in es31fSRGBDecodeTests.cpp. Suppress it for now. Bug: chromium:393942204 Change-Id: Ic03c2f8f2710ff3ccf44c102d1fd991bc4d1d380 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6226805 Auto-Submit: Hans Wennborg <hans@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Kimmo Kinnunen c6a8faf6 2025-02-03T15:00:07 Mark error strings as *, not [] Partially revert "Mark error strings as inline constexpr". Try to fix the reported 100kb+ size regression on Linux builds. Bug: angleproject:392938089 Change-Id: Id40f8820ff096497fc75165b23e520f96725e18a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6225599 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mohan Maiya b32a808d 2025-02-03T17:35:59 Re-enable EXT_multi_draw_indirect on the Vulkan backend. Update limitations before evaluating extension support Bug: angleproject:355645824 Change-Id: If34c0d5791443841798fd85a2d396b8b6cbbe837 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6226331 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 29e20d52 2025-01-29T15:58:04 Vulkan: Use single VkEvent to track depth/stencil and color attachment Right now ANGLE uses two VkCmdSetEvent calls to synchronize color and depth attachments in a render pass, one for color attachment and another for depth/stencil attachment. This is inefficient. ARM engineers confirmed combining both into one event with a combined stage mask (VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | kAllDepthStencilPipelineStageFlags) should not negatively impact performance. This CL merges depth/stencil related events into color attachment. The benefit of this is that for most render passes, you will see one less VkEvent which translates to reduced overhead. Bug: b/393150736 Change-Id: I0808b4dfd0b91efaaa2af649fef8bb02abbb3039 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187980 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Austin Annestrand 957bafb5 2025-01-30T11:49:41 Infra: Print stdout for TIMEOUT cases Bug: angleproject:392929827 Change-Id: I47625474e4ce9253a4cf275ea027290a6a2fbc33 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207671 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alex Dean 56d796a9 2025-01-31T09:13:30 CL/VK: Fix max read/write image arg limits Modifies how CL_DEVICE_MAX_READ_IMAGE_ARGS, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, and CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS are set. Temporarily accounts for the backend Vulkan driver reporting a meaningless value (ex: UINT_MAX). Bug: angleproject:391414842 Change-Id: I7d0ca865d3a516b22dc34849e4dc0a3a83e778c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187613 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen a04cb42a 2025-01-30T16:26:44 Metal: Remove autorelease use from libANGLE parts Use adoptObjCPtr() instead of AUTORELEASE to make all code uniform and more easy to reason about. Bug: angleproject:393263506 Change-Id: I15ea7e29784bcbe6bee6341fe288b340db813538 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216870 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Austin Annestrand e87d87f8 2025-01-29T22:23:27 CL: Add NDRange region chunk max GWS clamp Some implementations provide a value for maxComputeWorkGroupCount that goes beyond uint32_t when multiplied by local work size (to get the max global work size). This change clamps product to UINT32_MAX if that case occurs. Bug: angleproject:42267085 Change-Id: Ide87ef7be473c52db23c16ebf1e44a7fdcaf3081 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6217421 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 44b5f0a5 2025-01-06T16:01:28 OpenCL: Pass in options to the CTS tests In the case where options are specified, pass them down to the CTS tests. New tests with options for copy_images, fill_images and bruteforce are added. The changes in `angle.json` file are autogenerated by running `python3 scripts.run_code_generation.py` Bug: angleproject:388319897 Change-Id: I1c7e133d8df00e008857b652132b45975f61a08e Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6153935 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com>
Geoff Lang c0b224c3 2025-01-31T12:20:00 Re-enable EXT_base_instance on the Vulkan backend. Vulkan has native support for the base instance draw calls and does not go through the emulation paths. Bug: angleproject:355645824 Change-Id: I370ece42cffff6df5b1c070d637c20e071598de7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216375 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 65c07386 2024-12-04T16:17:49 Vulkan: Limit dyn vertex input state WA on QCOM * Limited the workaround for dynamic vertex input state so it is enabled on the later version in which it has been fixed. Bug: angleproject:381384988 Change-Id: I71db843e4ce247691dae2c7d0db32678d12492be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6072407 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 433d14e0 2025-01-28T17:05:32 CL/Vulkan: Submit an empty command on command buffer reset On resetting the command buffer, the queue serial associated with it wont get signalled leading to causality issues. Instead submit an empty command to maintain queue serial timelines. Bug: angleproject:392934330 Change-Id: I53996b295d2744b58487e483dd45918e48f58c83 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207673 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov e6115fdd 2025-01-27T19:37:25 Vulkan: Fix and simplify Wayland window resize The `doDeferredAcquireNextImage()` may only be called with `forceSwapchainRecreate == true` argument when in `ImageAcquireState::NeedToAcquire` state. In any case, method must not be called when state is `ImageAcquireState::Ready`. Instead of adding state check to the `WindowSurfaceVkWayland::getAttachmentRenderTarget()` method, this change removes this method entirely, since calling `doDeferredAcquireNextImage()` is not required (as well as the `mResided` member). The `WindowSurfaceVkWayland::mExtents` will be compared with the current extent in the `checkForOutOfDateSwapchain()` since "perFrameWindowSizeQuery" feature is enabled for Wayland. Bug: angleproject:40096815 Change-Id: I31608d52ba72305cbb31220f21829ad18f9d2ce7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6203062 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen c411081f 2025-01-30T15:18:20 Metal: Remove RenderUtils mtl::Context base RenderUtils is not using mtl::Context error handling for anything. Bug: angleproject:392938089 Change-Id: I1ef86db8f03ff34bb54726a0aad31d07fb1b44ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218788 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Austin Annestrand 2567dc4f 2025-01-30T11:20:57 CL/VK: Add spv validation for program build Bug: angleproject:42266976 Change-Id: I529395cba2d935cd6117c9c18fefd9a27903e2a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216570 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand fb2ae3fb 2024-11-26T16:23:52 CL/VK: Missing ext check in reflection parser When parsing "spv::OpExtInst", we also need to check for "ext_inst_type" to be clspv reflection type. Otherwise we might end up parsing bogus/non clspv ext type instructions. Bug: angleproject:42266976 Change-Id: Iab115f44890ce83fea09fb39be24b45ee2fa827b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216569 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 7d37d970 2025-01-30T13:47:59 Make error messages end in a dot Some messages had dot and some not. Fix by adding dot to all error message string literals. Best effort, for free form string literals, check ANGLE_CHECK invocation sites only. Bug: angleproject:392938089 Change-Id: Idedc3fe1d1e186fb91b5e54407df87f6830995a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218460 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 1df10f8a 2025-01-29T14:50:21 Unsuppress VUID-VkImageViewCreateInfo-pNext-01585 * Updated ImageHelper::DeriveCreateInfoPNext() to check the usage flags as well. * If the image uses the storage bit, the format list should not be added to it as pNext. Otherwise, if the count is not zero, it expects the format used in its image view to be one of the stated formats and will result in a VVL if this is not the case. Bug: angleproject:42264452 Change-Id: I789ec5a9751366029929c4c25a942056df13b9ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216381 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen eb0e72e0 2025-01-30T09:50:27 Mark error strings as inline constexpr Some WebKit build configurations are seeing duplicated strings. A global constexpr implies static, which allows that each compile unit gets its own instance. A global inline constexpr guarantees that the instance address evaluates same for all address takers. This should guarantee that the strings are not duplicated. Use char[] instead of char * to guarantee that referencers would get the length. Bug: angleproject:392938089 Change-Id: I5652ed8807d5052abe41671f4a0005905fe8d30b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218459 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 0549137f 2025-01-30T13:15:09 CL/VK: Fix cmd queue deadlock on clFlush Issue was that app-thread held mCommandQueueMutex for clFlush duration. App-thread notifies the queue-thread via "mHasWorkSubmitted" condition-variable. Queue-thread later calls finishQueueSerial(), and that routine tries to recursively grab mCommandQueueMutex. This change avoids this by unlocking app-thread before it notifies the queue-thread (also takes capture of QueueSerial before unlocking). Bug: angleproject:375231041 Change-Id: I71e0c9f9455a86b97acbc88107b0edbc05ce33a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194198 Commit-Queue: Gowtham Tammana <g.tammana@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Rafay Khurram 439dfe5e 2024-12-12T00:37:13 CL/Vulkan: Add options passed to clspv compiler * Passes rte mode and image feature macros options to clspv compiler * Adds image feature macros device reported cl features Tests-Passing: OCLCTS.test_compiler features_macro, OCLCTS.test_samplerless_reads, OCLCTS.test_image_streams, OCLCTS.test_basic image_param Bug: angleproject:42266936 Change-Id: Ifd2b2c49a525ba3ee4be572de004fd317b0ff1ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6089949 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Rafay Khurram <r.khurram@samsung.com>
Charlie Lao 9d934912 2025-01-09T11:31:42 Vulkan: Use VkEvent to track transform feedback buffer write This CL adds event tracking into BufferHelper class: mCurrentWriteEvent is used to track the write event and mCurrentReadEvents is used to track all different reads from the buffer. Since you can have multiple different reads accumulate over time, read events are an array of EventStage and the actual VkAccessFlags per event is tracked in mCurrentReadEventsAccessFlags. Note that this is specifically designed to allow pipelineBarrier and eventBarrier to co-exist. If mCurrentReadStages contains more bits than mCurrentReadEvents, the remaining bits will be using pipelineBarrier. Similarly if mCurrentWriteStages contains more bits than mCurrentWriteEvent, the remaining bits will be using pipelineBarrier. A heuristic tracking is also added to track the buffer writes over a period of time. Right now we will opt buffer into VkEvent if the buffer ever written by transform feedback in the heuristic tracking window. This could be expanded in future if we found more usage pattern that would be benefit from using VkEvent. Also note that DrawIndirect and VertexInput will be using the same VkEvent to track. It still will be using different VkAccessFlags since the access flags comes from buffer instead of event. Bug: angleproject:360274928 Change-Id: I027ffed8a0fbff7f280f42cf70564b8a3f243d69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6085490 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 03019646 2025-01-29T10:36:38 Vulkan: Fix invalidate of emulated format followed by more draws If invalidating a color image with emulated channels, a clear is automatically staged so the emulated channels don't contain invalid data later. This is problematic with deferred clears; the clear marks the framebuffer attachment as dirty, and the next command causes `FramebufferVk::syncState` to pick the clear up as a deferred clear. This is normally correct, except if the following command is another draw call; in that case, the render pass does not close, yet the clear is cached in `mDeferredClears`. When the render pass later closes, it undoes the invalidate and attempts to remove the clear from the image... but it does not exist there anymore (it's in `mDeferredClears`). Next usage of the image then clears it, undoing the draws after invalidate. In this case, the simplest approach is to close the render pass right away here. Note that it is not possible to make `FramebufferVk::syncState` avoid picking up the clear in `mDeferredClears`, not apply the clear, _and_ keep the render pass open; because future uses of the image (like with |glReadPixels|) will not trigger `FramebufferVk::syncState` and the clear won't be done. Bug: angleproject:353167428 Change-Id: Ie677bd12d9f11953cdcd5e4c374b59c4f63e7456 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6214331 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 5325904b 2025-01-29T14:43:35 Metal: Simplify error checking Use normal ANGLE_CHECK, ANGLE_CHECK_GL_ALLOC, ANGLE_CHECK_GL_MATH when appropriate. Use ANGLE_MTL_CHECK for checking Metal NSError return value. Remove mtl::ErrorHandler::handleError variant that responds to NSError. Uses "Internal error." that occur due to implementation bugs. Binary size is already expended with __FILE__ et al to disambiguate the location. The descriptions were not actionable for the API client and sometimes wrong cut-and-paste. Bug: angleproject:392938089 Change-Id: If9525d3d1610d5bc757855053600d78d2a1526c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6211841 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Cody Northrop 5798be5e 2025-01-13T07:45:11 FrameCapture: Fix framebuffer bindings in MEC While capturing an app, I was crashing on the line reading replayState.getReadFramebuffer()->id() That's because replayState did not have a read framebuffer bound, and we dereferenced nullptr. replayState is a default state that we've created and we're modifying to make it *look* like apiState. We should be updating replayState to match the framebuffers bound in apistate. In this case state*Framebuffer is read from apiState and is the value we want to propagate. AFAICT these have been incorrect since they landed in the initial implementation, but the code is complex: https://chromium-review.googlesource.com/c/angle/angle/+/1689329 Test: Tower of Fantasy capture Bug: b/389808881 Change-Id: Ibf7bc56cd385c34139676c5813926f756bb38f42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6174746 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com>
Gowtham Tammana e330d959 2024-04-09T15:13:48 CL/Vulkan: Add native builtins to clspv compiler Add a set of native builtins that are known to perform better for Samsung devices. A feature condition `uses_native_builtin_cl_kernel` is setup in `vk_featurs.json` for control of the selection. The following files are autogenerated - FeaturesVk_autogen.h - angle_features_autogen.cpp - angle_features_autogen.h Bug: angleproject:361717757 Change-Id: I10ffad0cbf1d4c2e9bfeea768311d90b0f65af2d Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6092036 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand b4cac1ad 2025-01-29T10:59:22 CL/VK: Hotfix: Implementation of Compute Pipeline Cache Unnecessary "new" that was leaking when moving raw ptr to cache map. Easy fix is to stack allocate and std::move the object to container when finished initializing. Bug: angleproject:391672281 Change-Id: I7b0f922de2a1332e8e452e87bc498d3c9907d7d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6214690 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 6f5b32d0 2025-01-29T18:55:21 Suppress flaky end2end test on Linux NVIDIA Vulkan ClearTextureEXTTestES31Renderable.Clear3D Bug: angleproject:362486580 Change-Id: Iff0195d85c828d172ea4b9e150b62da7df0769d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6215271 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Kimmo Kinnunen 43e7384d 2025-01-28T18:28:44 Metal: Fix a race in failing compilation subtasks Program link invokes two link subtasks, one MSL compilation per shader in program. If these tasks would fail, they would race to write the error message to the error string held in link object. Fix by recording the error message to the compile tasks and forwarding it to the context when sub task result is fetched. Bug: angleproject:392652319 Change-Id: Icb369f7bd62da5155d7915f2743ac53d91d61ea8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207769 Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Liza Burakova 40523499 2025-01-29T12:13:45 WebGPU: Emulate line loops for drawElements Bug: angleproject:383356846 Change-Id: I82a6dfad4a1c5d434f029701611e4b61344655f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6086120 Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 9975e80b 2025-01-28T17:25:38 Vulkan: Bugfix in SPIRV entrypoint transformation Perform varying precision fixer transformation before other shader-stage-specific transforms that could potentially modify the interfaceList. Also enhance EXTBlendFuncExtendedDrawTest by enabling additional config with VaryingsRequireMatchingPrecisionInSpirv feature enabled Bug: angleproject:386749841 Change-Id: Ife4a2f932415296f1565527e50a2b8646cd7697d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207741 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Yuly Novikov af4817db 2025-01-29T14:12:02 Suppress angle_oclcts_non_uniform_work_group failures on Linux NVIDIA Bug: angleproject:42267085 Change-Id: I13f85d8b7ed140f3a10262fe335de664cfd68624 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6213432 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuly Novikov 00f0b887 2025-01-29T14:04:38 Skip pokemon_go flaky crash on Linux Intel Bug: angleproject:392938092 Change-Id: Ie46582b91fc498640b2651f3e04aaf7d1769da6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6213430 Reviewed-by: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Igor Nazarov b5809efa 2025-01-16T17:56:47 Delay eglSwapInterval() effect until swap ... and fix resetting effect of `eglSwapInterval()` call by changing the `EGL_RENDER_BUFFER` attribute, and resetting desired shared present mode when calling `eglSwapInterval()`. Bug: angleproject:390333526 Change-Id: I473c7d4c5929e2179bbcd378b3695d10213644de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169922 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao f231d94b 2025-01-13T14:58:16 Vulkan: Add kBufferMemoryBarrierData to mirror image Right now we only maintain a mapping from EventStage (which is a value of VkPipelineStageFlags) to VkPipelineStageFlags for images. For next CL we need to indicate if use VkEvent is preferred or not for a given PipelineStage access. This CL expands kPipelineStageFlagBitMap (and renamed to kBufferMemoryBarrierData) to contain both the VkPipelineStages and EventStage to indicate if VkEvent should be used or not, similar to kImageMemoryBarrierData but a lot simpler. Right now it all set to EventStage::InvalidEnum which means will use pipelineBarrier. This will change in next CL. This CL also does some clean up: A few BufferHelper related functions changed argument from ErrorContext* to Context*, mainly because of BufferHelper::release() now takes Context* as argument so that we can recycle events within context's share group without lock. ImageLayoutToMemoryBarrierDataMap is added to replace angle::PackedEnumMap<ImageLayout, ImageMemoryBarrierData> kEventStageAndPipelineStageFlagsMap is removed. InitializeEventAndPipelineStagesMap is now using kImageMemoryBarrierData directly to construct mEventStageToPipelineStageFlagsMap. As result of this, EventAndPipelineBarrierHaveMatchingStageFlags is also removed since InitializeEventStageToVkPipelineStageFlagsMap already ensures this. Bug: angleproject:360274928 Change-Id: Idb74f3e4120ca9a04b8eccb7ed034aa769024bf9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6172763 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Austin Annestrand e0cbdbb5 2025-01-15T14:08:45 CL/VK: Enable dispatch region chunking This change does two things: - Allow non-uniform workgroup size - Dispatches that go beyond VK workgroup count limit Bug: angleproject:42267085 Change-Id: I1f2da93252e466b811273ee34d9d38e454f11686 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6180550 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 95635ef0 2025-01-23T16:30:41 CL/VK: Implementation of Compute Pipeline Cache. Implemented ComputePipelineCache, hash map from OpenCL and OpenGL compute state vectors to compiled pipelines. Implemented ComputePipelineDesc, a tightly packed description of the current compute state. Compute Pipeline State includes the specialization constants, Pipeline Options (Protected, Robust). Updated-by: Austin Annestrand <a.annestrand@samsung.com> Bug: angleproject:391672281 Change-Id: I88944dc169d194d1b2c75747769d7346b041fa75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191437 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Geoff Lang 1161ac8e 2025-01-23T13:25:01 WebGPU: Implement no-op gl_PointSize Support writing to the gl_PointSize builtin but do not pass it to the next shader stages. Bug: angleproject:392604862 Change-Id: I845a3edeb0ce8e7ea41a5e96e5f3b443100f2cbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194555 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Roman Lavrov d9128ff4 2025-01-28T09:43:58 Clean up Galaxy expectations for A/S23 and S24 Exynos/QC Split A23 and S23 into separate lists GALAXYS24EXYNOS for S24 Exynos ("International") GALAXYS24QUALCOMM for S24 Qualcomm Bug: angleproject:359904354 Bug: b/338429767 Change-Id: If9c1f184df6c6f15e3b5d5af3a7e1310cb445984 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207255 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Cody Northrop fa0de0dd 2025-01-27T17:32:49 restricted_trace_perf: Support --fps-limit Simply passes the flag and value through. Test: restricted_trace_perf.py --fps-limit 30 ... Bug: b/376300037 Change-Id: I344492944babed33edcbdae6b2906795d31715e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6204802 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Gowtham Tammana 0878d854 2024-10-29T12:24:22 CL/Vulkan: Query spv version from renderer Query the SPV version to be used by the clspv from the Vulkan renderer and set it up accordingly. Bug: angleproject:361717757 Change-Id: I6b1497120c21402386cb52a751970830e5cd7f3e Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5973716 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 7fe2a36c 2025-01-24T19:47:01 Vulkan: Parse Samsung Vulkan driver version Use driver version instead of API version to disable imageless framebuffer feature Bug: angleproject:386749841 Change-Id: Ia7bf06210224d399d60d6c1000c4fb8179f1239c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6199891 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alex Dean 2e36e947 2025-01-16T15:12:22 CL/VK: kernel's arg.handle update properly when setArg Fix arg.handle to be an underlying CL object type. Bug: angleproject:390488741 Change-Id: I8a9d3981a46f17e9af906f0e345c17585a332b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6180553 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 885a8060 2025-01-24T12:27:10 WebGPU: Implement depth/stencil test. Force the compare function to Always when depth or stencil tests are disabled. Bug: angleproject:392604945 Change-Id: I67265b2e5eabe8e9fc3d1222140ee1b6a7c5cefa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6198040 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Geoff Lang bec97bbb 2025-01-23T13:29:04 WebGPU: Flip Y for ReadPixels ReadPixels results are upside down. Flip the results in the PackPixels functions. TODO: Re-evaluate if this needs to be default-FBO only once more tests are running. Bug: angleproject:42267090 Change-Id: Ia5e5ee218de2e754f5de02a826f664d2f71efb76 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194557 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0f75fc3d 2025-01-20T14:10:41 Vulkan: Transition foreign images to the FOREIGN queue on submit Vulkan's interaction with AHB and dmabuf images is through the FOREIGN queue family. When ANGLE uses these images, it must take ownership of the images by doing a queue family ownership transfer (QFOT) away from the FOREIGN queue family and into the graphics queue family used by the Vulkan backend. Prior to this change, ANGLE would do the QFOT away from FOREIGN once such a foreign image is imported into an EGL image. Afterwards, usage in ANGLE works correctly. What ANGLE did not handle is when a foreign entity wants to use these images _after_ ANGLE has used them. For the above to work correctly, ANGLE must do a QFOT back into FOREIGN before the image can be used by the foreign entity. Unfortunately, EGL does not provide a clear point for this hand-off to happen. ANGLE has no choice then to proactively transition the images back into FOREIGN at some point "just in case". For some native drivers, this hand-off to FOREIGN can be quite frequent. For example, on Android for most vendors there is no actual layout transition between graphics and FOREIGN queue families (the actual data layout is the same), so a cache flush/invalidate at strategic points (such as the end of the command buffer) is sufficient as equivalent to transition to FOREIGN (and another at the beginning of the command buffer as equivalent to transition from FOREIGN). As a layer over Vulkan's formalism, ANGLE is less lucky; it has to enumerate exactly which image is being transitioned to and away from FOREIGN. Transitions away from FOREIGN are in principle easy. As long as the image is marked as being in the FOREIGN queue family, it will automatically transition to the graphics queue family on first use. In this change, when a foreign image is transitioned out of the FOREIGN queue, it's added to a list of images to be transitioned back to FOREIGN at submit time. Once submission is done, the image may or may not actually be used by a foreign entity, but ANGLE cannot know that. The next time the image is used in ANGLE, it is transitioned out of FOREIGN. Verifying correctness with multi-threading is tricky, and relies on GL's requirement that access in one context is followed by a synchronization and rebind in another context before it can be used there. This means that the image's transition to FOREIGN (at the end of one submission) naturally happens before the transition back from FOREIGN (at the beginning of the next submission). Because the set of images to transition is tracked in the context, submissions in other contexts don't interfere with the above logic. The situation can be more complicated with one-off submissions, but fortunately, no such usage of foreign images is present. Another wrinkle is simultaneous usage of the image as read-only in two contexts. According to GL, this is not a hazard and requires no synchronization. However this is broken in ANGLE even for non-foreign images (see http://anglebug.com/42266349), because as what _seems_ like read-only usage of the image from GL's point of view (like sampling from the image), there are associated write operations from Vulkan's point of view (image layout transitions and QFOT). This change does not attempt to address this corner case. Bug: angleproject:42263241 Bug: angleproject:42262454 Bug: angleproject:390443243 Bug: chromium:382527242 Change-Id: Idd4ef1fecfa3fccf1a4063f1bddb08d28b85386b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6184604 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 47c64ce2 2025-01-24T16:15:26 Vulkan: Fix driver version parsing Bug: chromium:371512561 Change-Id: I469c4ae71613fdfdfd7e58602b5a7262342acba7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6199184 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 8c298ec9 2025-01-12T22:53:32 Vulkan: Use surfaceless queries with headless EGL configs Bug: angleproject:389342064 Change-Id: If5ec101f5ef5135febe3fe12d5c309fe2a35f07c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169254 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Artem Kharytoniuk d7ea4b2c 2025-01-06T20:40:48 Vulkan: Use syncval extra properties for error suppression Bug: angleproject:391284743 Change-Id: I594a70e7d06f1d73647407dbac1afece666a7c5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6180310 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alex Dean d926d80d 2025-01-16T09:53:35 CL/VK: Fix enqueueFillImage & enqueueMapImage lock and waitlist Fix in enqueueFillImage and enqueueMapImage. Semantically should be using scoped lock and processWaitlist() instead of enqueueWaitForEvents(). Bug: angleproject:390387802 Change-Id: I86173a079aa7fdd54a8b7158ec8214147cfb7cd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6179619 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand b5c12605 2025-01-22T13:44:13 CL: Limit max work size/offset to UINT32_MAX Set a hard limit of UINT32_MAX on work item/offset for OpenCL's clEnqueueNDRangeKernel cmd for all backends (simplifies handling). Bug: angleproject:42267067 Change-Id: Ied1685609b3818e4c3a366a03770dc361198639c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191436 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Roman Lavrov adb52e06 2025-01-23T17:36:44 Avoid unnecessary copy ctor calls of gl::DepthStencilState That object has a user defined copy ctor to copy padding (https://crrev.com/c/783990). This together with copying instead of using a reference results in a function call (which just wraps memcpy) Bug: b/383305597 Change-Id: Ia92e726a887bd12ab14c1ca53f79c0b13b57a199 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194695 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi 54b69688 2025-01-21T11:28:59 Vulkan: Add max memory allocation size limit check During memory allocation, we should make sure that the attempted allocation size does not exceed the maximum allowed size. Failure to do so may result in validation errors. * Added the following object to the renderer: mMaintenance3Properties * It holds the following device property: maxMemoryAllocationSize * Inline renderer function: getMaxMemoryAllocationSize() * Buffer and image allocation sizes will now be checked with the function above. * In case of exceeding the maximum allocation size, a device OOM error is returned after issuing a warning: * MemoryAllocationTracker::onExceedingMaxMemoryAllocationSize() * Removed the suppression for the test failing due to this issue. * Removed the maxMemoryAllocationSize VVL skip targeted for MockICD. * Suppressed tests on S22 that now fail due to exceeding this limit: * KHR-GLES[31/32].core.texture_buffer.texture_buffer_max_size Bug: angleproject:391002353 Change-Id: Id271066bd872c80344ef8531653afda3e6b40a93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187981 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao c3f9109e 2025-01-09T17:22:41 Vulkan: Change EventMaps from struct to class For better encapsulation, this CL turns struct EventMaps to class RefCountedEventArray. Bug: angleproject:360274928 Change-Id: Ie28996fdb95d5a830399e6fa6cd5602f403e8725 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6164698 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao c7ad15e3 2025-01-23T13:37:28 Vulkan: de-duplicate ImageHelper::barrierImpl and barrierImplOneOff barrierImpl is renamed to recordBarrierImpl barrierImplOneOff renamed to recordBarrierOneOffImpl barrierImpl contains all the common logic between recordBarrierImpl and recordBarrierOneOffImpl. Bug: angleproject:390443243 Change-Id: I01ce9ea3f1f0acb30fe0efcdd20bd1caaa248a7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6195570 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao fbd230f5 2025-01-23T12:59:06 Vulkan: Split ErrorContext into ErrorContext and Context ErrorContext continue to be context for error handling. vk::Context is added to serve as common base class for ContextVk and CLContextVk. Bug: angleproject:390443243 Change-Id: Ifac0b1d2d714ce610693ce60a35459c6c9cddf1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191438 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c1214ec2 2025-01-22T14:22:56 Vulkan: Rename Context to ErrorContext In preparation for adding another Context (derived by GL and CL contexts), which includes logic that pertains to command recording (such as barrier tracking). Bug: angleproject:390443243 Change-Id: Idf495b62e63fb9aa901a2f16447fdaf3c2acd90b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191248 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 92cc4e02 2025-01-22T16:07:00 Vulkan: Fix incorrect initial RP layout for shared present Renderpass was using `ImageLayout::ColorWrite` as initial layout for the SharedPresent image. Vulkan validation did not detect errors because of limitations (or bug?): once command buffer with barrier is submitted, layers no longer track the current layout, and therefore skip the check. In other words, it seems like VVL only track layout transitions within a command buffer. Transition to `ImageLayout::SharedPresent` currently performed using one-off command buffer, which is always immediately submitted. This is the reason why VVL was ignoring the error for so long. Bug was discovered in `EGLSingleBufferTest.AcquireImageFromSwapImpl` during local testing, where one-off command buffer was replaced with outside RP commands. Other tests were still working fine, because they are using `glClear()` in the very first flush - no renderpass in the first submission, and so VVL can't track the layout once it is used in a renderpass in the second submission. Bug: angleproject:42262606 Change-Id: I19404b5be706e54e53890c2fec9cb4796296c698 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6182598 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Yuly Novikov 2d71b6b7 2025-01-23T16:56:02 Suppress dEQP failures on S22 dEQP-GLES31.functional.geometry_shading.instanced.geometry_output_different_32_invocations dEQP-GLES31.functional.geometry_shading.instanced.geometry_output_different_max_invocations KHR-GLES31.core.geometry_shader.primitive_counter.* KHR-GLES32.core.geometry_shader.primitive_counter.* Bug: angleproject:386749841 Change-Id: I41f399ab914d000d6b606170b6d191b61840eec8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194732 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Austin Annestrand 55f421f6 2025-01-22T13:47:29 CL/VK: Add missing ArgumentWorkgroup case Missed nop-case when processing kernel resources during enqueueNDRangeKernel (avoids false-reporting of UNIMPLEMENTED during routine). Bug: angleproject:42267067 Change-Id: I0785ab94769fcb9b28ca0ff86d8104cc95056e5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191435 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 40267ddc 2025-01-14T12:51:00 Vulkan: Add bufferWrite for multiple shader stages This is mostly a clean up CL. When a buffer is used in multiple shader stages, it was inserting barrier multiple times by calling bufferWrite in a loop. This creates unnecessary barrier against one shader stage to another shader stage. This CL adds a multiple shader stages version of bufferWrite that takes "const gl::ShaderBitSet &writeShaderStages" as an argument, in consistency to bufferRead. Otherwise this creates a problem in future CLs where we use VkEvent to track the write and you end up with WAW of the VkEvent that has not submitted. Bug: angleproject:360274928 Bug: angleproject:42262235 Change-Id: I923dc9df39318d337f67f4fa0f6a68f336df24f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6180948 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 51cdae04 2025-01-21T18:41:15 Update dEQP-GLES2.functional.shaders.random* test expectations Most tests have been fixed with the latest qualcomm drivers, except 1 test is still failing: dEQP-GLES2.functional.shaders.random.all_features.fragment.39. Bug: b/328156792 Bug: b/338287961 Change-Id: Ib2ff74c6ae7e9f39958617fb8d00b9b1f89878ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6188697 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 0acd0a17 2025-01-21T18:31:32 Remove fixed dEQP-EGL.functional.*pbuffer tests from skip list These tests pass with latest ANGLE version d9c0aa4aff. Bug: b/330906568 Bug: b/328156792 Bug: b/332784194 Change-Id: Ib42fe3cfb22f3f7a1bd84609f927cc47613a4920 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6188696 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 9867010e 2025-01-21T18:17:37 Remove fixed dEQP renderbuffer test from skipped test list Test passes with the latest ANGLE version d9c0aa4aff. Bug: b/328156792 Bug: b/333959262 Change-Id: I231feb43af69a1dab877fd3d3bd915b73d56d4b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187619 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu fd94ce5b 2025-01-21T18:05:41 Update the deqp blend equation advanced test expectations on qualcomm Some of the dEQP-GLES31.functional.blend_equation_advanced* tests are fixed by the latest qualcomm drivers. There are 9 remaining tests still failing. Update the expectation file with these 9 tests. Bug: b/328156792 Bug: b/345581214 Change-Id: I995b0f8a14d18f8ed4d1cdd27c334bdb09387d97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187617 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuxin Hu e5a4924e 2025-01-21T17:42:50 Remove fixed dEQP copy texture tests from skipped test list Tests passed with the latest qualcomm drivers. Bug: b/347306270 Bug: b/328156792 Change-Id: I8d6c0cb04d13635a91b0d774c56d8f3f72bc0e4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6187616 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxiang Qian 308cfc62 2025-01-13T14:54:18 Do not reset buffer age after query The spec doesn't mention that we need to reset the buffer age if no rendering after last call of eglQuerySurface to query EGL_BUFFER_AGE_KHR. Age was also reset after first time of query. Remove it to align with spec. New end2end test is also added. Bug: angleproject:391039188 Change-Id: I00c96e3a71ea2c9abcb86ebaf520243408dedd52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6185135 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 1d25be59 2025-01-09T11:09:22 Vulkan: Pass Context instead of Renderer to BufferHelper APIs This is preparation CL for later CL. In later CL we need to access context argument in BufferHelper's barrier related functions. release() also preferred to have context argument so that the events can be recycled within share group. Because of this, a lot of functions has to propagate back to pass context as argument instead of renderer. Bug: angleproject:360274928 Change-Id: I13e930666eeeefbcff7b542d0e3126f3b07ce286 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6164686 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 680ff1f4 2025-01-22T19:17:40 Suppress flaky end2end test on Linux NVIDIA Vulkan ClearTextureEXTTestES31Renderable.Clear2DArray ClearTextureEXTTestES31Renderable.ClearCubeMap ClearTextureEXTTestES31Renderable.ClearCubeMapArray Bug: angleproject:362486580 Change-Id: I4254a4c28cb0b201d9e94511d5ddc8cce975d1c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6190629 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuly Novikov 4be68add 2025-01-22T18:24:24 Skip OcclusionQueriesTest.WrongSkippedQuery Fails on Win Intel UHD 770 Vulkan Bug: angleproject:388144480 Change-Id: Iee4bbae63991bb7d678bdd0777b45647322f3843 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6191327 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
WeiCong Yu 90e3f6bd 2025-01-17T23:10:55 executable path has non-ASCII characters, metal not available On ARM64 MacOS 15.0.x, Metal Shader with newLibraryWithSource didn't work if the executable path contains non-ASCII characters. Bug: chromium:389559087 Change-Id: I0482c01e2a11973f56c712b36062ed78f3cecf9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6174286 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Igor Nazarov d8a95bf7 2024-12-19T17:35:05 Vulkan: Protect OneOff commands recording with pool mutex Bug: angleproject:384940864 Change-Id: I518c54ae4b0fc5da0e58d330f8c531bc8d65529e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6108843 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi 3734b432 2025-01-21T14:24:42 Suppress some clear tests on Linux/Intel/GL * Suppressed the following tests on Linux/Intel/OpenGL due to observed flakiness on the bots: * ClearTextureEXTTestES31Unrenderable.Clear3D * (ismatch in output values) * ClearTextureEXTTestES31Renderable.Clear2DArray * (FBO status is shown as incomplete) Bug: angleproject:384967031 Change-Id: I46e23e95619c6836b03edf6a52514b138f1542dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6182634 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Charlie Lao a5016e31 2025-01-17T17:50:27 Vulkan: Fix typos found by gerrit spellchecker Bug: angleproject:360274928 Change-Id: Idbffd7a4609f28d161bd0a11ace817856dcd750c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6182930 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 0afc3323 2025-01-21T12:46:28 Add fast path to ValidCap for most frequent cases glEnable/Disable are commonly called with the ones that are now on the fast path. GL_POLYGON_OFFSET_FILL seems slightly less common but still frequent enough to be inlined. This noticeably reduces the number of function calls in DO2 trace as well as branch predictor load (confirmed by cpu counter stats from a mobile device), and just this change appears to improve wall_time a bit. Bug: b/383305597 Change-Id: I8fa42de64d79f6638b312891f440d796dd95c57c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6184086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>