src


Log

Author Commit Date CI Message
Shahbaz Youssefi a1665d2f 2024-05-10T00:15:31 Reland "Document thread-unsafe iterator access to resource maps" This is a reland of commit d1bb6ed8399dd12e79484f30f9e9ded95c25625a The crash was due to another issue (disabling EGL validation in Chrome) Original change's description: > Document thread-unsafe iterator access to resource maps > > By using a proxy type, everywhere resource maps are iterated are clearly > marked as not being thread safe. In most cases, only destruction and > capture/replay iterate over these maps, which means thread safety is not > an issue (or is externally enforced). > > The only case where iterators are used in the presence of other contexts > is with ANGLE_request_extension, which is changed to explicitly require > the application to ensure thread safety. In practice, the user is > Chrome which already guarantees this. > > Bug: angleproject:8667 > Change-Id: I7af13c6433b6955d9c36f9088b3aa4c065e1cfc1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5526428 > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:8667 Change-Id: Id539cabac01df5f242150f6684222577003eef3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5531278 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao df2e7bd7 2024-05-10T19:48:34 Vulkan: Handle the case that VkEvent failed to create. If VkEvent failed to create, we can still fall back to pipeline barrier. This CL changes RefCountedEvent::init to return boolean. Also when it fail, this CL did an immediate garbage clean up in case it will free up more event from garbage list and then retry again. Bug: b/336844257 Change-Id: I28251849a92d1785701c55eb028a8fed63cfc372 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5532869 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov 3b470cf5 2024-05-13T12:43:25 Move PPO executables to ProgramExecutable This will allow to recursively deal with PPO uniforms Bug: angleproject:8666 Bug: b/335295728 Change-Id: Iadc2d009937fb5e8a39b070674ef5d67c9f0fb19 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5532715 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Le Hoang Quyen 0044f4d1 2024-05-13T00:29:30 Metal: fix IOSurface's render targets invalidated by max level change. This CL fixes a bug in the following tricky situation: - Client binds an IOSurface to a texture. - Previously this would internally intialize the texture's max level to the default value 1000. - Client changes the texture's max level to 0. - Client attachs the texture to FBO 1. - Client binds FBO 1 and clear it. - This triggers TextureMtl::getAttachmentRenderTarget() that initializes the RenderTargetMtl of the texture. - Client binds FBO 0 and sample the texture. - Previously this could trigger TextureMtl::onBaseMaxLevelsChanged() which would invalidate the texture's RenderTargetMtl. - Client binds FBO 1. - Client blits FBO 0 to FBO 1. - This will set DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 in FBO 1. - Client calls glFlush to restart render command encoder. - Client issues a draw call. - DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 would cause FrameBufferMtl to re-initialize RenderPassDesc from invalid RenderTargetMtl. - A new render encoder would be created from the invalid RenderPassDesc. - the draw call would be encoded to a render command encoder without any valid color attachment. The fix in this CL is that when we bind an IOSurface to a texture, the texture's max level will be automatically set to 0. This will avoid its RenderTargetMtl from being invalidated if users explicitly change the max level to 0 in future. Note: this is not a foolproof fix for every scenario concerning the base/max level in IOSurface bound/or immutable textures. We will fix them in future CLs. Bug: b/335353385 Change-Id: I3a2da6991764f22393178f40c1d7bbe60503cba4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5531388 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 82ddb33b 2024-05-10T00:00:00 Metal: Do not separate vector and matrix constants Do not create temporary variables for already folded constant vector and matrix values. This reduces register usage and partially fixes MSL compilation errors caused by matrices present in constant initializers. Bug: angleproject:8691 Change-Id: Iedfabadd9b7bcb2e6e1e08a5ad39f48305365747 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5533925 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4e887491 2024-05-11T18:08:03 Revert "Document thread-unsafe iterator access to resource maps" This reverts commit d1bb6ed8399dd12e79484f30f9e9ded95c25625a. Reason for revert: Checking to see if it's the reason for crbug.com/339948886 Original change's description: > Document thread-unsafe iterator access to resource maps > > By using a proxy type, everywhere resource maps are iterated are clearly > marked as not being thread safe. In most cases, only destruction and > capture/replay iterate over these maps, which means thread safety is not > an issue (or is externally enforced). > > The only case where iterators are used in the presence of other contexts > is with ANGLE_request_extension, which is changed to explicitly require > the application to ensure thread safety. In practice, the user is > Chrome which already guarantees this. > > Bug: angleproject:8667 > Change-Id: I7af13c6433b6955d9c36f9088b3aa4c065e1cfc1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5526428 > Reviewed-by: Charlie Lao <cclao@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:8667 Change-Id: I1245c9e57dfeb27a7f0e5718b1455614c70bc0dc No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5532187 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d1bb6ed8 2024-05-10T00:15:31 Document thread-unsafe iterator access to resource maps By using a proxy type, everywhere resource maps are iterated are clearly marked as not being thread safe. In most cases, only destruction and capture/replay iterate over these maps, which means thread safety is not an issue (or is externally enforced). The only case where iterators are used in the presence of other contexts is with ANGLE_request_extension, which is changed to explicitly require the application to ensure thread safety. In practice, the user is Chrome which already guarantees this. Bug: angleproject:8667 Change-Id: I7af13c6433b6955d9c36f9088b3aa4c065e1cfc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5526428 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4cacc66e 2024-05-09T16:08:58 Remove unused ResourceMap::find Bug: angleproject:8667 Change-Id: I0d0c00337895b247a1f0536f5072fdcf12b7de1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5527560 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 1202055c 2024-05-09T11:25:38 Vulkan: Updates to perf counters 1. don't reset pipeline cache hit / miss counters after every frame 2. bugfix in LinkTaskVk::getResult(...) 3. accumulate counters in WarmUpTaskCommon::getResultImpl(...) Bug: angleproject:8297 Change-Id: I39d7e1a438d78e2e353c5cf8246fb24fb3cfefea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5529942 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Geoff Lang 394e8767 2024-05-08T15:18:37 WebGPU: Fix accumulating mCurrentColorAttachments. mCurrentColorAttachments was not being cleared so multiple clear operations would have incorrect color attachments. Comparing against the previous RenderPassDescriptor also compared the same color attachment memory since the same scratch buffer was used to generate the new descriptor. Bug: angleproject:8582 Change-Id: I9026007607941b92856728b421bc43812195ca57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5526978 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Geoff Lang a70ef7fc 2024-04-25T14:19:50 Add EGL_ANGLE_no_error for disabling EGL validation. Chrome makes many small EGL calls that can have proportionally expensive validation. Bug: angleproject:8434 Change-Id: I4f4d0e6eff64839f76a0f7bf48e5c94b8df9d809 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491459 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Scott Marcy 2ecfc5a1 2024-05-03T18:29:12 Issue 8644: Deeply nested iterator declarations can crash Avoid stack overflow crash when parsing nested iterators (especially `while` statements). Limits the number of nested iterator statements to `mMaxStatementDepth` (defaults to 256). Bug: angleproject:8644 Change-Id: I9b0fd2ab456c3cdd731b41ab97f495ae4dc0b0bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5519169 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Auto-Submit: Scott M <mscott@apple.com>
Liza Burakova 36cd4c1f 2024-05-08T12:27:22 Adding basic readPixels. This change adds to methods in ImageHelper to read texture data. It also implements FramebufferWgpu::readPixels to get the parameters and read the texture data from an ImageHelper that's stored in mRenderTargetCache. Bug: angleproject:8653 Change-Id: I349ed8a0ae3d8d0e187c658f3402c4f8cac23eb8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5441353 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Cody Northrop 6a6192c8 2024-05-08T08:42:24 Tests: Add native to EGLPrintEGLinfoTest For comparisons, it is useful to run the EGLPrintEGLinfoTest against native drivers. Test: angle_end2end_tests --gtest_filter=EGLPrintEGLinfoTest.*/ES3_2_EGL Bug: b/337554150 Change-Id: If7c94296fbbd9f3057449d54581f334a37e59216 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525656 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 071e1e83 2024-05-08T10:33:49 EGL: eglCreateSyncKHR uses a return value for the tail call eglCreateSyncKHR was duplicated in two lists for using a tail call and needing a return value tail call. Bug: angleproject:8434, chromium:338902974 Change-Id: I9dffeaec3468e4ea3f5ed7d885e9ef418e8d8da5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525854 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy 1dc83614 2024-05-07T14:54:06 Suppress experimental Linux/Intel failure Adds a test skip for a flaky test that was accidentally omitted when enabling the Linux/Intel experiment. Bug: angleproject:8683 Change-Id: I28dea9cb9617f5b8e4cb26d4626a5472608ac398 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5523916 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Liza Burakova 1d0ef518 2024-05-07T16:56:43 Fixing glClear tests. This CL makes a few changes to fix up the basic glClear test RGBA8Framebuffer, as well as adding a test that uploads a texture before clearing a RGBA8 framebuffer. It moves the wgpu::RenderPassDescriptor(RPD), as well as helper methods for comparing RPDs from the context to the framebuffer. The color attachments that are created in when FramebufferWgpu::clear is called are also stored in the framebuffer now as well. This CL also changes texture creation to use the RGBA8Unorm format instead of RGBA8Uint format. It also adds the wgpu viewFormats parameter to an ImageHelper. Future formats support is still TBD. Bug: angleproject:8582 Change-Id: Idfc4182eb4d6de8a771f2f91d337564ee71df010 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5503549 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Shahbaz Youssefi e29d643e 2024-05-07T13:40:18 Vulkan: Fix missing per-present-mode query ... if VK_EXT_surface_maintenance1 is supported but VK_EXT_swapchain_maintenance1 isn't. The code mistakenly made the appropriate query conditional to the presence of swapchain_maint1 instead of surface_maint1. On devices where surface_maint1 was available but swapchain_maint1 wasn't, this caused a VVL error that is now fixed. Bug: angleproject:8680 Change-Id: Ide9a87f0e50887572f693d741d5476361320ea19 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5522756 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 3d04180c 2024-05-02T17:30:02 Vulkan: Add a dedicated garbage list for RefCountedEvents Previously each individual RefCountedEvent is wrapped into a GarbageObject. That is the reason behind RefCountedEvent being a subclass from WrappedObject, since vk::GetGarbage call requires garbage object is a subclass of WrappedObject. This CL adds a new garbage list dedicated for RefCountedEvents, named mRefCountedEventGarbageList. With this new change, we no longer limited by the vk::GetGarbage requirements since it no longer called for RefCountedEvents. RefCountedEventCollector is a vector of RefCountedEvents and every time a RefCountedEvent needs to be released, it adds into the collector. Then the event collector entire thing is treated like a garbage object and gets ResourceUse tracked and added into mRefCountedEventGarbageList. This list gets walked and cleaned when GPU is completed. This CL is also a preparation for later CLs that adds event recycle support. Bug: b/336844257 Change-Id: I4eff69b66922dfe5521b6994f240e967ff3726bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5516458 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 5b9e7f20 2024-05-06T14:50:44 Vulkan: Release mCurrentEvent before oneOff surface image copy In ImageHelper::copySurfaceImageToBuffer and ImageHelper::copyBufferToSurfaceImage, which get called from lockSurface, we are doing a one off submission to do the data copy between image and buffer. Surface image may have a current event set earlier, but we do not have a garbage collector to collect it. This will crash in barrierImpl when we try to add mCurrentEvent to the garbage collector. This CL releases mCurrentEvent so that it will fall back to pipelineBarrier. Since this is not on performance critical code path, the impact should be acceptable as well. Bug: b/336844257 Change-Id: Ib85c3038657a1845e86286cdb5f52247c2b9eb73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5519173 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Le Hoang Quyen f3089d1d 2024-05-07T00:14:53 Metal: fix UBO data update undetected between draw calls. This CL fixes an issue where an UBO was updated between two draw calls. This would internally allocate a new metal buffer however ContextMtl didn't know that hence it didn't rebind with new buffers. Bug: b/338348430 Change-Id: I3d8ce22921811e49ae1b8016ae4a20d770f6f372 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5515858 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Mohan Maiya 62eb8fbe 2024-05-06T07:22:15 Vulkan: Switch to using zlib::crc32_z for CRC generation A CRC is generated to validate blobs that are compressed / decompressed. There was a custom CRC generator being used, switch over to using zlib's crc32_z(...) Also increment kPipelineCacheVersion's version since both the header and structure have been updated. Data collected with dEQP test suite - 1. egl size of blob - 74022 bytes ComputeCRC16 - 0.001683 sec zlib::crc32_z - 0.000008 sec 2. gles2 size of blob - 8709119 bytes ComputeCRC16 - 0.130268 sec zlib::crc32_z - 0.000625 sec 3. gles3 size of blob - 20308078 bytes ComputeCRC16 - 0.433155 sec zlib::crc32_z - 0.002547 sec 4. gles31 size of blob - 11041841 bytes ComputeCRC16 - 0.192512 sec zlib::crc32_z - 0.000452 sec Bug: angleproject:4722 Change-Id: Iaa7026c9c8a748b446ef2320e584a2937336c7b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5518595 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi c3a1cae4 2024-04-15T14:58:55 Use angle::SimpleMutex everywhere in libGLESv2 Only cases left that use std::mutex are: - Share group and the context ErrorSet mutexes as they need try_lock() - Anywhere mutexes are used in conjunction with std::condition_variables (as they explicitly require std::mutex) Bug: angleproject:8667 Change-Id: Ib6d68938b0886f9e7c43e023162557990ecfb300 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453294 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen a951e0e0 2024-05-05T23:29:33 Metal: add test for active blit/compute & render encoder mistracking. The bug was already fixed but we need to add the test to avoid the issue from resurfacing in future. Bug: angleproject:8685 Change-Id: Ia10c0954ef39b20b1d891389b7e7a1c81cdc758d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5514529 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Mohan Maiya 58742dfb 2024-05-05T12:46:11 Use trim() instead of resize() ... when decompressing a blob, this prevents a reallocation and copy. Bug: angleproject:4722 Change-Id: Iedc20cb9a41feb754c7f48188e01ab73c5c03c15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5517530 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 251067ed 2024-05-03T22:36:11 Metal: don't break render pass when uploading a texture. Bug: b/337214693 Change-Id: Ib2dc77c364a72f2973cbc3882f6125bffbc0a11b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5514948 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Le Hoang Quyen 9ccb9b41 2024-05-03T22:23:03 Metal: fix incorrect tracking if blit & render encoder coexist Currently mtl::CommandBuffer tracks only one active command encoder. However this tracking is wrong if a blit/compute encoder is created without ending the current render encoder. Blit/compute and render encoders are allowed to coexist because the actual rendering encoding is deferred. The bug would happen for e.g. if: - There is an active render encoder. - ContextMtl::getBlitCommandEncoderWithoutEndingRenderEncoder() is called. - In this case, active encoder will be set to the blit encoder. - Later when blit encoder is ended, tracked active encoder would be set to null even though it should be the render encoder. This CL fixes the bug by tracking separate active blit/compute & render encoders. Bug: angleproject:7643 Bug: angleproject:8685 Change-Id: I9893402ecd4c0388aa0153acdb2be04315563086 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5514184 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Charlie Lao 28d4c3eb 2024-05-03T13:00:03 Vulkan: Remove BarrierType argument from ImageHelper::barrierImpl Originally I passed the barrierType argument into barrierImpl function to force pipelineBArrier in a few edge cases. Notably when we do a oneoff submission. In that case if we have an event that is pending setEvent call, and we will end up inserting a waitEvent call on an event that has not yet set, which is bad. But this really won't not happen. This CL removed BarrierType from the API and added a few assertions in the caller to ensure we do not have a valid event when doing a oneoff submission (if there is a pending setEvent, mCurrentEvent will be valid). Bug: b/336844257 Change-Id: I7161b844fc1f36993cf7ff6c90a070d9f92930cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5512878 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao ef8d9f10 2024-05-01T11:52:04 Vulkan: Use DEVICE_ONLY VkEvent when available VK_KHR_synchronization2 adds device only event. Since we are not using host operations on the event, this CL adds VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR bit when create VkEvent for RefCountedEvent. Bug: b/336844257 Change-Id: I0528b7f45b0da162daa228aea2adf5ce06b5fd6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5503644 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 5eb3bca0 2024-05-01T11:47:34 Vulkan: Minor cleanup Bug: b/336844257 Change-Id: I8d93c6dd814a666debf9990d151cad79c45469f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5503645 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Mohan Maiya 4880a6c2 2024-05-03T14:43:20 Enhance VulkanPerformanceCounterTest coverage Enable additional config with PadBuffersToMaxVertexAttribStride feature Bug: b/271915956 Change-Id: I5fe27781fc51cdf477d5c2f453ad05a211788739 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5512875 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d30e4772 2024-02-02T14:13:33 Vulkan: Add VkCmdWaitEvents for image barriers This CL add EventBarrierArray (sister class of PipelineBarrierArray) that accumulates the event barriers instead of pipeline barriers. ImageHelper::barrierImpl and ImageHelper::updateLayoutAndBarrier has been updated to have a code path that inserts waiting event to EventBarrierArray. PipelineBarrier code path is still kept and is also used when event is invalid or under certain situation as a fallback method from waitEvent. After we generate barrier (regardless it is pipelineBarrier or eventBarrier, we always release ImageHelper::mCurrentEvent. When next barrier/layout call is made, if we see mCurrentEvent is invalid, we always fallback to pipelineBarrier. This way it is safe that if somehow we did not (intentionally or accidentally) insert a new event between two barrier calls, we will not end up with second barrier call wait for old event which creates synchronization hazard. With this approach, second barrier will use pipelineBarrier which is still safe. In this CL the useVkEventForImageBarrier feature flag is still disabled, so no events are created and thus pipelineBarrier is still used. Bug: b/336844257 Change-Id: Idaf5a7200b85f901eae5d376543f189d21522022 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5263701 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova ead98ed9 2024-05-02T14:04:14 Implement basic texture upload. This change modifies ImageHelper's methods to upload textures to fix webgpu API calls, as well as fully implements uploading texture data via TextureWgpu::setImage for RGBA8 formats. Bug: angleproject:8457 Change-Id: I1c5be3d79ad996a709086ca7157cca6229a336ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398002 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 81c2b6e7 2024-05-03T08:12:18 Vulkan: Account for padBuffersToMaxVertexAttribStride ... in BufferVk::shouldRedefineStorage. For vendors that require additional padding, redefine storage iff the padded size is greater than existing buffer size. Bug: b/271915956 Change-Id: I2acf2bb32f85b71bcfdba6919974dd2922ee787b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5512870 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Mohan Maiya 9aa6d3da 2024-04-26T11:34:10 Add trim support to MemoryBuffer There are usecases where we need a MemoryBuffer to be trimmed to a smaller size. In such cases there is no need to perform a resize, which would trigger a reallocation. Instead just update MemoryBuffer's size. Bug: angleproject:4722 Change-Id: I5b6cca121977903ffa7663591eaec62f6ffda97a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5513269 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Roman Lavrov be9e63ad 2024-05-02T16:04:25 spirv::Print without ANGLE_ENABLE_ASSERTS -> compile error Currently a link error as we have a declaration but no definition Bug: b/338429767 Change-Id: I06175356613c410c8d7652b28b09636244f8b717 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5513002 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Mohan Maiya 97aaad3a 2024-04-20T19:27:13 Vulkan: Pack DescriptorSetLayoutDesc layout Use angle::FastVector instead of arrays to further compact DescriptorSetLayoutDesc layout Bug: angleproject:8677 Tests: VulkanDescriptorSetLayoutDescTest* Change-Id: I5bb7b2ebf0aa5aba3d7c47c45384788245dce3dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5470362 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Charlie Lao a96e9197 2024-04-25T10:35:02 Vulkan: Add RefCountedEvent class and VkCmdSetEvent call This CL defines RefCountedEvent class that adds reference counting to VkEvent. CommandBufferHelper and ImageHelper each holds one reference count to the event. Every time an event is added to the command buffer, the corresponding RefCountedEvent will be added to the garbage list which tracks the GPU completion using ResourceUse. That event garbage's reference count will not decremented until GPU is finished, thus ensures we never destroy a VkEvent until GPU is completed. For images used by RenderPassCommands, As RenderPassCommandBufferHelper::imageRead and imageWrite get called, an event with that layout gets created and added to the image. That event is saved in RenderPassCommandBufferHelper::mRefCountedEvents and that VkCmdSetEvents calls are issued from RenderPassCommandBufferHelper::flushToPrimary(). For renderPass attachments, the events are created and added to image when attachment image gets finalized. For images used in OutsideRenderPassCommands, The events are inserted as needed as we generates commands that uses image. We do not wait until commands gets flushed to issue VkCmdSetEvent calls. A convenient function trackImageWithEvent() is added to create and setEvent and add event to image all in one call. You can add this call after the image operation whenever we think it benefits, which gives us better control. (Note: Even if forgot to insert the trackImageWithEvent call, it is still okay since every time barrier is inserted, the event gets released. Next time when we inserts barrier again we will fallback to pipelineBarrier since there is no event associated with it. But that is next CL's content). This CL only adds the VkCmdSetEvent call when feature flag is enabled. The feature flag is still disabled and no VkCmdWaitEvent is used in this CL (will be added in later CL). Bug: b/336844257 Change-Id: Iae5c4d2553a80f0f74cd6065d72a9c592c79f075 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5490203 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi e4a12a67 2024-05-02T13:25:53 Vulkan: Dynamic depth test + static depth write When depth test changes in such a situation, the static state is still affected (because we mask depth write with depth test) so the graphics pipeline still needs to be invalidated. Bug: b/336386662 Change-Id: Iebba79ffd7d6fa3962a5b20c27efcca3aa35b10a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5511602 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 04825894 2024-05-02T11:17:33 Vulkan: Turn SPIR-V limitations to crash instead of security bug The input shader can be made complex in a number of different ways, resulting in instructions with a length higher than what can fit in SPIR-V (i.e. 16 bits). Ideally, the translator would catch such complex usage early on and gracefully fail compilation. However, as a safety net, this change makes sure such a case is detected when the SPIR-V instruction is being generated and turned into a crash. This makes sure such bugs are no longer security bugs. Bug: chromium:335613092 Change-Id: I5c0693ac1ead5af04977417f10572018f8aa72bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5510722 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy e5606471 2024-04-25T14:48:53 Start Linux/Intel experiment Bug: chromium:41496254, angleproject:8680, angleproject:8682 Bug: angleproject:8683 Change-Id: I1956ac642969cae0c17fff87388e899237b9df2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491789 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cody Northrop 44bdc2af 2024-04-23T19:43:29 restricted_trace_perf: Write summary for single renderer For use when generating spreadsheets focused on Vulkan. Previously the script would exit without generating a CSV file unless there were two renderers to compare. Test: restricted_trace_perf --renderer vulkan Bug: b/317411251 Change-Id: Ic9872599edb38c738112265b1ce7f252cf3f966a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5508315 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Charlie Lao caebfea1 2024-04-24T16:58:39 Vulkan: Make PipelineBarrierArray a class Right now PipelineBarrierArray is just a angle::PackedEnumMap<PipelineStage, PipelineBarrier>. To make iterate over barrierArray faster we added mPipelineBarrierMask. They are not encapsulated well. This CL makes PipelineBarrierArray a class which internally tracks mPipelineBarrierMask bits. We also moved pipelineBarrier related code into this class. This is a preparation for the later CL that we will have a EventBarrierArray so that the pipelineBarrier and eventBarrier are better separated. Bug: b/336844257 Change-Id: I6002e3fdd584d5a63587f68f13a260b417b3db32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484711 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 1bb1ee06 2024-04-29T15:27:36 GL: Sync unpack state for glCompressedTexSubImage3D Unpack state is supposed to be ignored for compressed tex image calls but some drivers use it anyways and read incorrect data. Texture3DTestES3.PixelUnpackStateTexSubImage covers this case. Bug: chromium:337766133 Change-Id: Ic11a056113b1850bd5b4d6840527164a12849a22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5498735 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi bb6a5724 2024-04-29T16:01:47 Use vendor ID to check QCOM device for tests * In angle_test_instantiate, IsQualcomm() will now use the vendor ID as well. Bug: b/331271522 Change-Id: Ifb26034516a007472fb2a54f34f332e34b46a365 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5499382 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Charlie Lao 950afec4 2024-04-30T09:38:43 Vulkan: Add VK_KHR_synchronization2 feature flag This CL adds VK_KHR_synchronization2 feature flag and enables the feature if exists. Bug: b/336844257 Change-Id: I201768e32c997125472c6a005c4635141441451e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5499379 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2d1bb3e1 2024-04-15T00:58:07 CL: Replace Spinlock with angle::SimpleMutex Bug: angleproject:8667 Change-Id: I9b53da920ea743d77c76793522cef826ecc62813 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5446559 Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 6658d5e8 2024-04-25T13:51:43 Tests: Add Modern Combat 5 trace Test: angle_trace_tests --gtest_filter=*modern_combat_5 Bug: b/330861486 Change-Id: I54b22010fdb5be6d1113f4dd6561848b44a413cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5501770 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Gowtham Tammana 298b8739 2024-04-15T13:58:01 Vulkan: Restrict the ContextVk dependency in CommandBufferHelper Updating the interfaces that have no need for ContextVk state and instead passing in the vk::Context. Bug: angleproject:8544 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Change-Id: Id3b72d9eabb7d1d6ee89c46cdc24a23da9e32b5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5492319 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang b839e05b 2024-04-29T14:35:42 GLSL: Hardcode emulated atan functions These emulated atan functions are generated for every compiled shader, the string generation is particularly costly for small shaders (>30% of total compile time). Instead just hardcode the emualted functions, there are only 4. Bug: angleproject:8434 Change-Id: I3f8b7cc9709ca132fae19953c23d02e54538d4e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5498516 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao 1064b38d 2024-04-24T14:41:59 Vulkan: Move ImageLayout define to earlier in vk_helpers.h file This is the preparation for the later CL. Later in the CL I need to define something like "angle::PackedEnumMap<ImageLayout, RefCountedEvent>" to use in CommandBufferHelperCommon. So I need ImageLayout to be defined earlier. No actual changes involved other than moving the code around for easier code review. Bug: b/336844257 Change-Id: I0a2553ef3aebf4b00d1798e2117fe6ed32ac172d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484675 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 4929e1df 2024-04-24T14:09:59 Vulkan: Add feature flag for using event for image barrier This is preparation CL that adds a feature flag for using VkEvent for image barriers. Bug: b/336844257 Change-Id: I01a7d779e16e2c259ddd05dca7338b3b18c30ba7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484708 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 038ad6c7 2024-04-23T13:23:04 EGL: Use unlocked tail calls for surface, sync and img calls EGL surface and sync calls can be expensive to do while holding the global lock on EGL. They are safe because the parameters are captured by value and the underlying EGL driver is also thread safe. EGL image creation also tends to be expensive and is called freqently by Chrome. Bug: angleproject:8434 Change-Id: I7e554fe2e3700d98469de267f7bbff1e96358c78 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478229 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 978cf07b 2024-04-25T14:35:14 Suppress failures on Pixel 6 AP1A.240405.002 Bug: b/336847261 Change-Id: I501f64e22536418715369742f5ec760e23aa2c14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5489759 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 44ce5887 2024-04-11T16:37:27 Allow the backend to do resource init for framebuffers. The frontend framebuffer would loop through attachments which needed to be initialized and call initializeContents on them individually. For the GL backend this is inefficient because each of these resources is bound to a scratch framebuffer and cleared when the entire original framebuffer could have been cleared at once. The frontend now accumulates a set of attachments that need to be cleared and sends it to the FramebufferImpl. The default FramebufferImpl does the old logic of calling initializeContents on each attachment. FramebufferGL has an optimized path to clear the whole framebuffer if possible. Bug: angleproject:8642 Change-Id: I574cd03307794a6c7b2666976784e4d4dca1d08c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5448552 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mohan Maiya a0b721bc 2024-04-23T17:08:58 Vulkan: Optimize DescriptorSetLayout with no bindings There is no need to unpack bindings of DescriptorSetLayoutDesc and call into vkCreateDescriptorSetLayout when there are no bindings. Insert a placeholder vk::DescriptorSetLayout into DescriptorSetLayoutCache. This reduces the number of Vulkan handles created and can be reused across multiple pipelines that have DescriptorSetLayoutDesc with no bindings. Bug: angleproject:8677 Change-Id: Ifc0d199697a95f3a5c037fd85520220a512d7949 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5483308 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2eed792c 2024-04-15T01:09:57 Vulkan: Use angle::SimpleMutex with async command queue This change lets ANGLE test the waters with angle::SimpleMutex with functionality that is currently mostly exercised by tests. Bug: angleproject:8667 Change-Id: Icf3a021da1f0a2e1c9235ed518bcb9e378b09cfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5446560 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Gowtham Tammana acb8b33f 2024-04-16T14:08:34 Vulkan: Enable 8/16 bit storage buffer extensions The support for 8bit and 16bit storage buffers are exposed via VK_KHR_{8,16}bit_storage vulkan extensions. Add checks for these extensions and enable them if present. The changes in FeaturesVk_autogen.h in the change are generated by running the run_code_generation.py script. Bug: angleproject:8676 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Change-Id: Idcda416e3eb6a735e021cd5bb0a182af341e9a16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491781 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya b74de557 2024-04-24T14:35:17 Vulkan: Add a feature related to shader subsets On vendors that support VK_EXT_graphics_pipeline_library the shaders subset of the pipeline can either be combined into a single pipeline or can be decoupled into separate pipelines. Upcoming optimizations require the ability to distinguish between the two options. Add a feature declaring support for only the combined variant. Bug: angleproject:8601 Change-Id: I44fb828d972ca6ebba5549819ce8e41645683e14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484673 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Dan Glastonbury d9a00875 2024-02-21T16:57:43 Metal: Override internal format of images Add support for overriding the internal format when binding Metal textures to EGL images. Fixed: angleproject:8552 Change-Id: I364a88a2e608e462c5216c92927679814ab91ca5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5310305 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Roman Lavrov 89caa0e1 2024-04-23T15:32:52 Cleanup: replace DirtyObjectType check with constexpr generator Static assert was meant to avoid kDirtyObjectHandlers getting out of sync, but it doesn't achieve that goal as it's just comparing values with ints which is confusing. Replacing with constexpr generated std::array. C++20 allows to easily validate that all values are set by _not_ default-initializing `handlers`. C++17 makes it trickier, addeded static_assert on an additional static constexpr bool (silly but I can't find a more concise way) Bug: angleproject:8666 Bug: b/335295728 Change-Id: Idf9bbd087d09d5ba253a7587ce0503cae3fcf3a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478231 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Geoff Lang 884dc380 2024-04-24T16:46:01 EGL: Make eglGetCurrent(Context|Surface|Display) lockless. These functions access only egl::Thread state. Bug: angleproject:8434 Change-Id: I3dd6cd1f4fd145613f0be824e4f6e13815422997 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5485526 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand c62c0c25 2024-01-24T17:29:45 CL/VK: Implement initial enqueueRead/WriteBuffer Bug: angleproject:8638 Change-Id: I1d5b3b15fab24ce35c243a3eb27bcac2104d7f5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5409250 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand 6cfb5931 2024-03-13T12:31:40 CL/VK: Implement marker and barrier cmds Adding in last remaining marker and barrier cmds: clEnqueueMarker clEnqueueBarrier clEnqueueMarkerWithWaitList clEnqueueBarrierWithWaitList Bug: angleproject:8634 Change-Id: I67e03e379c3f9e40a31bcba34ea85e2739cc97b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406617 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 04329fe0 2024-01-24T12:51:05 CL/VK: Implement wait APIs This commit implements: clWaitForEvents clEnqueueWaitForEvents Bug: angleproject:8633 Change-Id: I873310ab11dfac08c165dc36be2400a35be48878 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406616 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Mark Lobodzinski e3a58b25 2024-04-11T09:33:55 FrameCapture: Support deferred linking of shaders Modern Combat 5 creates and attaches programs and shaders but defers compiling and linking until needed. Added support in the tracer for this corner case and updated CapturedTest to exercise this behavior as well. Test: angle_end2end_tests --gtest_filter=CapturedTest.MultiFrame/ES3_Vulkan Bug: b/334030316 Change-Id: Ib7fdf0fe25b11cdb3df33d50e49501f3a51e9510 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5449599 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 37d2277b 2024-04-23T20:00:04 Vulkan: Disable dynamic state on JM based Mali Latest Vulkan driver causes a number of issues on this GPU. Bug: b/336411904 Bug: b/336847261 Change-Id: I34a4842ba501c5f71c8b9c7d97c2bb215b30d7be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484709 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jose Dapena Paz 47fc356b 2024-04-09T11:20:07 GCC: move warm up tasks out of anonymous namespace GCC anonymous namespace is set per file. So forward declaring in the anonymous namespace of .h will not be valid in the .cpp file. Bug: chromium:40565911 Change-Id: I10bd94f035761602d69e59a94dfde5dc774a6776 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5475346 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d2e5eeef 2024-04-23T17:47:03 Vulkan: UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout Supress the above VVL error. What happened is that the test creates a single buffer context. Since it only has one buffer for both render and present, we always immediately put it in VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR. Then when we render to it, we got the above VVL error. According to vulkan spec 6) What should the layout of the shared presentable image be? RESOLVED: After acquiring the shared presentable image, the application must transition it to the VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout prior to it being used. After this initial transition, any image usage that was requested during swapchain creation can be performed on the image without layout transitions being performed. And we always include VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT usage flags when creating swapchain images, so this should be okay. Bug: b/336652255 Change-Id: I8a04f94c9a7b6dcc1818697f45630cb0a6ee8811 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5479840 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao c74d2634 2024-04-19T12:19:51 Vulkan: Update mSurfaceCaps with per-present mode caps. Vulkan spec says "The per-present mode image counts may be less-than or greater-than the image counts returned when VkSurfacePresentModeEXT is not provided". Riht now we are using the generic surfaceCaps information which has smaller minImageCount. This triggers VVL error VUID-VkSwapchainCreateInfoKHR-presentMode-02839.. This CL updates mSurfaceCaps and mMinImageCount with per-present mode caps and create swapChain with proper minImageCount. Bug: angleproject:8672 Change-Id: I6061d2db8e98032dcb2c3225f2976013a99336a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5467850 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Kimmo Kinnunen 6fe8a399 2024-04-22T18:11:30 Metal: Fix rewritten out variables with underscores Fix compilation in case of output variables start with underscores. Make name emission always emit MSL name ANGLE_{name}, so that GLSL `_e` and `e` cannot clash. This regressed in angleproject:8558. Bug: chromium:335744344 Change-Id: Ibae4dba4a24888acc1461582e69d48218ba11176 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5473412 Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Charlie Lao 2905a6a6 2024-04-19T15:09:41 Vulkan: Fix read pixel to cached non-coherent memory The bug here is that when we use cached non-coherent memory for image read, we must wait until DMA to finish before calling invalidate(). Otherwise CPU pre-fetching might end up populate the cache line again with old data between invalidate and DMA and causes CPU reads get the stale data from cache. This CL moves invalidate() call after we wait for copy to finish and removes requireCachedBitForStagingBuffer feature flag. Bug: b/335937565 Bug: b/315836169 Bug: b/324953979 Change-Id: Ie8a1854e17a5fe9c534c5102b2e0d51bd35c131a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5468597 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya 36ae4553 2024-04-21T05:18:17 Vulkan: Remove unnecessary member from ProgramExecutableVk Bug: None Change-Id: I896cd67c0ca41d146d8f1cd5494404bbd30b8264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5469555 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 23b8a833 2024-04-19T18:03:17 Suppress VUID-VkSwapchainCreateInfoKHR-presentMode-02839 Breaks experimental Pixel 6 Android U bot https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/4979/overview Bug: angleproject:8672 Change-Id: I2968dd1ed4ed7e2bc636d762b6d1fb884733a264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5466741 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Austin Annestrand cc770518 2024-03-28T18:05:00 CL/VK: Implement flush & finish Bug: angleproject:8632 Change-Id: I139e463c0b1c947cee68e65c40503e52f01e988b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406615 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi c75b03ad 2024-04-18T16:09:48 Vulkan: Remove duplicated fallback entry in vk_format_map.json Bug: b/335496851 Change-Id: Id5fe805a15ae4fa4b09ffbf05fcf7b6d3d79b1ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5463921 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Austin Annestrand d4abe622 2024-04-03T17:46:38 CL/VK: Implement enqueue NDRangeKernel & Task Adding support for: clEnqueueNDRangeKernel clEnqueueTask Bug: angleproject:8631 Change-Id: If57002be3ea00a55215e89ca47ab8fe9a422c6e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406614 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 48132950 2024-04-17T17:05:07 Vulkan: Optimize DescriptorSetLayoutDesc layout Separate out immutable samplers into its own array so we can remove padding from PackedDescriptorSetBinding which reduces the size of that struct from 16 bytes to 4 bytes. Bug: angleproject:2462 Change-Id: I79d1ab584178202c9b7f34b0c7926edced4e21a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464162 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 80c8b6f0 2024-04-17T10:06:45 Revert "Vulkan: Only enable DS dynamic state if there is DS attachment." This reverts commit 471b50407d7d1c22491d066df77060cb8b9b2f89. The reverted change does not correctly handle UtilsVk functions, leading to validation failures. UtilsVk could be made to not set dynamic state when the depth/stencil attachments are missing, but instead the change is reverted because: - The original issue that prompted this is easily fixable (and fixed in this change) - Disabling depth/stencil dynamic state is not necessarily a performance improvement; every time a pipeline in such a render pass is bound, the driver would have to make sure to no-op the relevant state change if static, which is also costly. Instead, dynamic state may need to be set only once in the entire render pass. Bug: b/223456677 Bug: b/315353258 Bug: angleproject:8242 Change-Id: I8282b87857d6b9285dbcf307c3c6ecf69df5fadb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5462079 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu d0b01c81 2024-04-17T14:40:10 Remove duplicated fallback entry in vk_format_table_autogen Bug: b/335496851 Change-Id: Iff6a095aaffac099779b093e02b1a818b510dc0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464161 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 4109a90e 2024-04-16T17:31:11 LinkedUniform: avoid frequent GLenum -> index conversion Certain functions such as getElementComponents() are frequently called in driver_overhead benchmark, causing repeated GLenum -> index conversion of the uniform type which shows up in profiling (driver_overhead_2 trace) Change LinkedUniform.pod.type to LinkedUniform.pod.typeIndex storing the UniformTypeInfo index with conversion helpers. Bug: b/335295728 Change-Id: Iae5cd58f4e2703589d23b8e52991fc4b97c5fb08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5458741 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 00fa9af9 2024-04-18T10:55:34 Disable the BasicNoOpMutex test It's flaky by nature, and the flake rate turned out to be much higher than anticipated (i.e. it cannot be ignored). Bug: b/335541479 Change-Id: Ic29c549aa761230e1d8aa8156c66e78aae939e53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5463920 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 6861da63 2024-04-17T15:52:27 Vulkan: Don't cache staging buffers on PowerVR Seeing flakiness in simple tests. Narrowed it down to cached coherent memory. There is likely something ANGLE is doing wrong but broaden the workaround until it is root caused. Test: angle_end2end_tests Bug: b/315836169 Bug: b/324953979 Change-Id: I15e50781f746ffb24b0a12b1e28df04a3822b556 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464283 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mohan Maiya b2aad1bb 2024-04-17T06:12:14 Vulkan: Track valid descriptor set layouts Instead of looping through kMaxDescriptorSetLayoutBindings in `DescriptorSetLayoutDesc::unpackBindings` track valid descriptor set layouts in `DescriptorSetLayoutDesc::update` Bug: angleproject:2462 Change-Id: I1ca2ba72875d9306b6059b14cde39c5d16250be6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5464160 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi d71b8ee0 2024-04-17T10:00:27 Vulkan: Fix dynamic depth/stencil in UtilsVk when unused Dynamic state still needs to be set even if depth/stencil test is disabled. Bug: angleproject:8151 Bug: b/323708819 Change-Id: Ic470fabd84c71b026152b6bee2e6a2c803514106 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5462059 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 03c88d33 2024-04-17T03:03:17 Revert "Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781" This reverts commit 99ac37cf7bad44d43f0c18da0410bde1073b62ea. Reason for revert: Fixed upstream https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7851 Original change's description: > Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781 > > Only failing on windows x86. Unknown if ANGLE bug, VVL bug, or an > inherently racy check as it happens only in the window resize tests. > > Bug: angleproject:8668 > Change-Id: I0f928883647a4dc701d58e2df99e647e1397c773 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453692 > Reviewed-by: Roman Lavrov <romanl@google.com> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8668 Change-Id: I8831b5011ed3a7f5bf48af25f8933d50b5c4e1ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5459521 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi e92b8e8d 2024-04-16T13:27:19 Manual roll VK-GL-CTS from 491cfc2dbec9 to b529676d0523 (1 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/491cfc2dbec9..b529676d0523 2024-03-29 yuxinhu@google.com Move external/openglcts/data into a new subdirectory 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,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://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 Change-Id: I5e07217cca190ec243f1b700348cde0384dbf052 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5457892 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1264c9cc 2024-04-16T13:22:16 Manual roll VK-GL-CTS from caf989d22e07 to 393ca590ec21 (5 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/caf989d22e07..393ca590ec21 2024-03-29 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (transform_feedback3), PART 4 2024-03-29 marcin.zajac@mobica.com Test depth with VK_EXT_fragment_density_map 2024-03-29 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8 into vk-gl-cts/main 2024-03-28 skr@nvidia.com Consider layer index when retrieving decoded frame 2024-03-26 rgarcia@igalia.com Share test configuration between case and instance in EDS tests 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,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://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 Change-Id: I562b77d2dab2e949a2562c1bb0e655e1ed8bb5df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5459012 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 97cb3eb8 2024-04-16T10:25:49 Split ASSERT and logs into separate header This is because SimpleMutex.h wants to ASSERT, which was defined in debug.h. That file has a function that returns a reference to a mutex that would eventually be changed to SimpleMutex. The circular dependency cannot be resolved with a forward declaration with SimpleMutex being defined with `using`. Bug: angleproject:8667 Change-Id: I9a3acb6d07c6702048b47a72d8411b0fc2166922 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5458631 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9d583bf 2024-04-15T00:24:47 Implement a lock/unlock-only mutex based on futex Pthread mutexes are expensive due to their numerous features. When a mutex only needs to support lock and unlock, its implementation can be much simpler. The implementation in this change is "inspired" by a similar mutex in mesa. Expected uses of this mutex are: - Allowing some OpenGL calls to avoid the share group lock and instead lock the specific shared object they operate on. - Replacing SpinLock in the OpenCL implementation (spin-lock in user space is a bad idea [1]) - Generally anywhere we use std::mutex just to do lock/unlock Tests based on patch authored by Igor Nazarov <i.nazarov@samsung.com> [1]:https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723 Bug: angleproject:8667 Change-Id: I52278c9d19616338c499bbcef6684746caead6ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5446558 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Matthew Denton 6557da03 2024-03-22T05:49:59 Implement TextureWgpu::getAttachmentRenderTarget() Most of this is copied from TextureVk::getAttachmentRenderTarget() with parts removed to make it simpler to start. Need to check what happens when running a clear test. Bug: angleproject:8582 Change-Id: Ia3b1f057add7714c7b192af1a3bf0edb41ccb649 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388077 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova 041b0a4d 2024-04-15T13:42:17 Begin initializing caps for webgpu Bug: angleproject:8457 Change-Id: Idde0673297ec675a13bd3e4fd4d220ec47392153 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391987 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Liza Burakova 2218db2b 2024-04-10T13:41:17 Add error callback for webgpu device Bug: angleproject:8547 Change-Id: I9946311a1f93cc5f49fb0e17e65c92789bdb3b6a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5443428 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f4d3041a 2024-04-13T22:37:11 Remove double-serialization for glGetProgramBinary The applications get the binary length first, and then get the binary itself. Prior to this change, ANGLE was serializing the program binary twice. What's more, if the blob cache is enabled, ANGLE serialized the program binary yet another time for that. With this change, the program binary is serialized only once. If the application queries the program binary, serialization is done the first time needed, is cached and then discarded as soon as the binary itself is returned. Bug: angleproject:7393 Change-Id: If6e3011097ca4d4a1cdcd2dcc23496901196d999 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5448090 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 24ba48eb 2024-04-13T23:07:11 Do not cache program binary in blob cache redundantly with app If the application has specified the GL_PROGRAM_BINARY_RETRIEVABLE_HINT hint, let the application itself cache the program binary and skip ANGLE's implicit caching. This saves time in serializing the binary, and memory and disk space storing these binaries. If the application sets the hint, but does not actually restore the binary, they will suffer instead. This change also adds a perf warning for applications that retrieve the binary without setting this hint. Bug: angleproject:7393 Change-Id: I05aa880a31fa2fbbd61447c257c990a57137e1e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5448089 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 99ac37cf 2024-04-15T09:38:07 Vulkan: Suppress VUID-VkSwapchainCreateInfoKHR-pNext-07781 Only failing on windows x86. Unknown if ANGLE bug, VVL bug, or an inherently racy check as it happens only in the window resize tests. Bug: angleproject:8668 Change-Id: I0f928883647a4dc701d58e2df99e647e1397c773 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5453692 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e229afad 2024-04-12T16:15:42 Vulkan: Disable setting_sync_queue_submit In this CL we basically ignored all SyncVal errors from VkQueueSubmit. https://chromium-review.googlesource.com/c/angle/angle/+/5137081 But this validation is still enabled. This validation is super slow right now (tracked by https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/7285). There is no need to waset bots time to do this validation and then ignore its result. Bug: b/316013423 Bug: b/334183919 Change-Id: I1f6c53f484c088e684d2686422f33539b31b8b7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5450955 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 08d9d5cc 2024-04-12T16:04:34 Vulkan: VK_EXT_validation_features was deprecated and is replaced with VK_EXT_layer_settings. This allows all VVL settings to be controlled programmatically. See more detail in https://vulkan.lunarg.com/doc/sdk/1.3.280.0/windows/khronos_validation_layer.html Bug: angleproject:5290 Bug: b/334183919 Change-Id: I7dce52711260ee874bbd70bc0d351e5aa840dffa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5450954 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 67fc293a 2024-04-05T13:25:12 WebGPU: Add shader translation and program linking stubs. Add a TranslatorWGSL which outputs the same translated shaders every time. Implement the compile and link tasks. Bug: angleproject:8662 Change-Id: I62bbd6c528e1d671d0f4becc38f15f1eceb0336c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5428807 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Marius Kintel 5e790bfb 2024-04-11T14:58:58 Remove unnecessary D3D include Bug: b/329414677 Change-Id: If96e10f3762fe849485f52783565658889491c97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5444810 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>