src/libANGLE


Log

Author Commit Date CI Message
Amirali Abdolrashidi cc7d0220 2024-07-31T14:22:38 Vulkan: Fix serial mismatch during mid-loop flush Currently, if the total buffer updates to the image surpasses a certain threshold, it results in a flush. However, this can cause discrepencies in the queue serial, which can result in incorrect behavior on some platforms. * Updated flushStagedUpdatesImpl() so that the image serial after applying the updates matches that of the current outside command buffer. * That includes when there is a flush in the middle of the update loop, resulting in submission and new queue serial for the CB. * Added a unit test to check if a large texture can uploaded and deleted after a second small texture is uploaded. * Texture1UploadThenTexture2UploadThenTexture1Delete * Added a unit test for flushing when uploading cubemap textures. Bug: b/351650806 Bug: b/356192937 Change-Id: I7f9b20e4b7fd49115f22081a9733b4d44b740e4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744377 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 26cdf621 2024-07-31T14:43:12 Vulkan: Bugfix in dynamic rendering support Fix 2 bugs - 1. Set VkGraphicsPipelineCreateInfo::flags when linking GPLs 2. Chain VkRenderingFragmentShadingRateAttachmentInfoKHR struct in VkRenderingInfo::pNext Bug: angleproject:42267038 Change-Id: I456c75d57ec64926a21dffe93b05e1bbab2cb262 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754635 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7c77bb75 2024-07-24T12:05:29 Vulkan: Remove implicit buffer barrier for shader write When app uses shaders to write to SSBO, right now we are inserting an implicit barrier to ensure WAW are in order. But Spec says that "Explicit synchronization is required to ensure that the effects of buffer and texture data stores performed by shaders will be visible to subsequent operations using the same objects". This CL removes the implicit barrier for buffer write if the current write comes from shaders and relies on explicit glMemoryBarrier to insert a global barrier. Bug: angleproject:350994515 Change-Id: I8ab039610be9be2ded27ea60dab54bdad08502f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719258 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 279c69e5 2024-07-30T21:30:54 WebGPU: Fix intended/actual format mismatch for textures Update WebGPU texture allocation size to use the actual format instead of intended. Early-out with an UNIMPLEMENTED if the format is not supported yet. Bug: angleproject:356399840 Bug: angleproject:344814096 Change-Id: Idef9ad40c6b1d490964fc398fb077b117612a44b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748448 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang cab7d1b6 2024-07-30T21:19:15 WebGPU: Obey buffer alignment rules WebGPU buffers require a size aligned to 4 bytes and map buffer offsets aligned to 8 bytes. Hide this requirement in The BufferHelper class by doing the apropriate offsets during buffer creation and map calls. This allows many dEQP tests to run without crashing due to WebGPU buffer creation errors. Bug: angleproject:356399840 Bug: angleproject:42267091 Change-Id: Id71c3b5db31aa712d5a88631efa4897d6205a41d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748443 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 641bc04a 2024-07-30T21:25:44 WebGPU: Use the correct source format for ReadPixels ReadPixels was using the format of the destination buffer which works correctly for RGBA8 -> RGBA/UNSIGNED_BYTE but runs the wrong conversion functions for other formats. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I7c46add3f643017f454136135afef697847a2383 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748446 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9da7fb15 2024-07-30T21:21:45 WebGPU: Don't log all renderpass closure reasons This logging line spams the console excessively. For now, just make sure there is a message associated with each renderpass closure reason. Bug: angleproject:356399840 Change-Id: I2313d439837ffb11f11cd56194511e80fb312eba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748444 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1953c606 2024-07-30T21:28:13 WebGPU: Fix ReadPixels from window surfaces. The intended/actual formats were not initialized in this code path and the created swap chain texture did not have the usage flags needed for copying to a buffer for ReadPixels. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I8e4279eedb2b23f0d2ed690ccee086ae115969c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748447 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0898dab0 2024-07-30T21:34:00 WebGPU: Skip primitive topology conversion for DrawArrays For non-indexed draw calls, no index format is needed for the stripIndexFormat. Bug: angleproject:356399840 Change-Id: Ie2c9805a2c257d94ea5f1bca026287873e4d6781 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748449 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 8446bbd6 2024-07-30T21:22:50 WebGPU: Remove ASSERT in depth/stencil clears Instead of asserting that we are not clearing depth or stencil, just log an UNIMPLEMENTED and skip the call. This allows many dEQP tests to run without crashing on the ASSERT. Bug: angleproject:356399840 Change-Id: Icfe7a77d7128e679501da42023601217c7b0e6c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748445 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen aee59926 2024-06-28T17:00:56 Metal: Enable GL_ANGLE_reverse_row_order for Metal The feature is already implemented due to generic pack parameters handling and FramebufferMtl::setFlipY(). Bug: angleproject:349980052 Change-Id: I08cc81dcb26ae81e8d81b060d986e01479487dbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667597 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Shahbaz Youssefi 65f08d08 2024-07-26T22:14:49 Vulkan: Work around driver bug with nested switch Bug: chromium:350528343 Change-Id: Ie7bd58934ccb2b8f06f6ad6a8c3bf38e81b84969 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744620 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Marcin Radomski 4c883359 2024-07-03T13:50:58 Add dma_buf build support to generate_android_bp Minimized version of go/anglecl/5729843 that limits introduced changes. Make generate_android_bp.py emit a `angle_android_dma_buf` Soong config variable that, when enabled, creates a "Linux-like" build using Android toolchain. The build does not assume the presence of regular Android graphics stack. eglGetDisplay defaults to creating DisplayVkOffscreen. This enables EGL rendering context setup based on an externally allocated DMA-BUF, using EGL_EXT_image_dma_buf_import and GL_OES_EGL_image_external extensions. See ag/28533701 to view the generated code. Also, revert changes from "Add build flag for a "dma_buf" Android build" (commit 4d2b365582669a04224d1e1fa3c92447c359a4ba). The flag added there was submitted a bit prematurely, and as go/anglecl/5729843 was deemed too complex a different approach was necessary. Test: CQ Test: Build the entire CL chain with the new Soong config flag enabled Test: run the system, attach debugger to eglGetDisplay(), see Test: DisplayVkOffscreen getting instantiated Bug: b/353262025 Change-Id: I974d91cff79a0bd8b5059a145f0ae6114b2bcbe5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746214 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Marcin Radomski <dextero@google.com>
Le Hoang Quyen 198de044 2024-07-30T15:44:03 Metal: fix wrong render encoder's serial assignment mtl::RenderCommandEncoder object is created once and reused multiple times. We should re-assign a new serial whenever we reuse it, instead of assigning once in constructor. bug: angleproject:40644888 Change-Id: I18120c91dddd5b279fcec7a9099833e97ec1c37c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746179 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Le Hoang Quyen 2bc1519c 2024-07-28T05:16:07 Metal: fix base/max level change for mutable textures. Previously, the following scenario would accidentally delete and recreate the native texture storage for a non-immutable TextureMtl: 1. set a texture base/max level. 2. attach the texture to a FBO and clear it. - native storage is created. 3. sample the texture. - native storage is accidentally deleted and recreated. This happened because front-end only notifies the backend about the base/max level dirty bits at step 3. At this point, Metal backend thought that the native storage created at step 2 is no longer valid and attempted to recreate the storage. This CL fixes the bug by checking whether the base/max level is still compatible with the existing native texture storage. If it is then the dirty bits result in no-op. Bug: chromium:355605685 Change-Id: I1daac80a74219109631a101e18e944560606d926 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5741121 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao bd3a3308 2024-07-22T14:03:20 Vulkan: Remove implicit image barrier for shader write When app uses compute or fragment shader to write to an image and makes multiple dispatchCompute or draw calls, right now we are inserting an implicit barrier to ensure WAW is hazard free. But Spec says that "Explicit synchronization is required to ensure that the effects of buffer and texture data stores performed by shaders will be visible to subsequent operations using the same objects". This CL records the bits from the last glMemoryBarrier call and will skip the barrier calls in ContextVk::updateActiveImages if there is no layout change, unless there is requirement from prior glMemoryBarrier. Bug: angleproject:350994515 Change-Id: I8bdeeb658993824369824aaa0f25cb4b6e3785f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719024 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 57202584 2024-07-26T13:07:44 Vulkan: Fix dispatch-after-closed-render-pass bug Bug: b/355567160 Change-Id: I4bc6acec53a50330507bfadcc0a4c1093366aae6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5741786 Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Marcin Radomski b20cd34d 2024-07-18T10:03:17 Add build flag for a "dma_buf" Android build Add angle_android_dma_buf gn flag, defaulting to false. When enabled: - Enables a "linux-like" build of ANGLE while using the Android toolchain, by making the OS detection logic define PLATFORM_OS_POSIX but not PLATFORM_OS_ANDROID. - Makes ANGLE default to using Vulkan backend, and - Enables DMA-BUF based external image support. This allows setting up GL framebuffers backed by DMA-BUFs, enabling rendering without full Android graphics stack. See the bug for details. Bug: b/353262025 Test: treehugger Test: Build the entire CL chain with the new Soong config flag enabled Test: run the system, attach debugger to eglGetDisplay(), see Test: DisplayVkOffscreen getting instantiated Change-Id: I584f9491b188f730f4ee9630173cc486ae7e8908 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5729841 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Geoff Lang a0a832de 2024-07-26T12:33:37 Revert "GL: Forward client-side arrays to the driver when possible" This reverts commit a6c2b4346516f228054b5bdd754bbc6f3ba1cba7. Reason for revert: Fails some Chrome tests on Android after rolling: https://chromium-review.googlesource.com/c/chromium/src/+/5742024 Original change's description: > GL: Forward client-side arrays to the driver when possible > > The OpenGL dirver can handle client-side arrays when the context is > OpenGL ES or a desktop GL compatability profile. When in these > sitatuions, use the driver default VAO for all frontend context VAOs > and forward client-side data directly to the driver. > > Bug: angleproject:355034868 > Change-Id: I21a4459c4f7db780b51441d76e63d17bf737c101 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5736058 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:355034868 Change-Id: I76f95d66ca277bcbb67300179e49287b433c1ede No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5742647 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Geoff Lang a6c2b434 2024-07-23T16:36:10 GL: Forward client-side arrays to the driver when possible The OpenGL dirver can handle client-side arrays when the context is OpenGL ES or a desktop GL compatability profile. When in these sitatuions, use the driver default VAO for all frontend context VAOs and forward client-side data directly to the driver. Bug: angleproject:355034868 Change-Id: I21a4459c4f7db780b51441d76e63d17bf737c101 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5736058 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Liza Burakova 4f498eaa 2024-07-24T14:31:23 WebGPU: Add more format support This CL adds a new FormatTable class that initializes webgpu texture and vertex formats. It also adds this class to the display so it can be used in the ImageHelper. This CL changes the previously hardcoded RGBA8 texture format that was initially used when creating textures to use the format passed into the methods. Bug: angleproject:344814096 Change-Id: I768b85335329116496dbf721aac54d1137aaae9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5660397 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Geoff Lang 84e54d88 2024-07-22T14:39:22 WebGPU: Add command buffers and renderpass management Add a CommandBuffer class to serialize and replay WebGPU commands. Only Draw and SetPipeline are implemented in this patch. Manage render pass begin and end events due to framebuffer changes and swapping. Handle the color mask dirty bits so that a non-zero color mask will be used. All togther, this is enough to draw a triangle using a hard-coded shader without inputs. Bug: angleproject:0 Change-Id: I0fbf0296563c02c7f0774ad4197b83f4c93c22bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5731594 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 703c5960 2024-07-24T17:02:28 Vulkan: PPO must warmup pipeline cache according to GPL support This commit caused regression: https://chromium-review.googlesource.com/c/angle/angle/+/5366173 `ProgramPipelineVk::link()` uses Complete subset for warmup regardless of the GPL support. However, `ContextVk::createGraphicsPipeline()` will respect the GPL support. Before the above change, PPO was respecting GPL for warmup. This change removed `subset` parameter from the `getPipelineCacheWarmUpTasks()` not only to avoid copy-paste logic, but also to ensure consistency with `waitForGraphicsPostLinkTasks()`. Bug: angleproject:8601 Change-Id: Iab5df1b55921649a8f98a34bb07d8e6a145bfd4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5738153 Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev fc381db4 2024-07-23T00:00:00 Metal: Treat link jobs as thread-safe Fixed: angleproject:351165323 Change-Id: I2ad7b8bd4b89be7d98876287c641b86a33e1108e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5735475 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mark Lobodzinski b98c4d81 2024-07-23T09:09:37 FrameCapture: Add restore of VAO buffer binding If the VAO was changed before the trace started, but no buffers were bound during replay, the VAO buffer binding was not properly reset. Test: angle_trace_tests --gtest_filter=*shovel_knight_pocket_dungeon Bug: b/354888763 Change-Id: I76f94e5d219b88c641528049034d92ee55161f56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5734653 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 6eda2557 2024-07-22T00:00:00 Metal: Pass an existing context to CompileMslTask Bug: angleproject:351165323 Change-Id: Icd4a2c8f9e158dc1989d720dc8235ba09dc0d82a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5736272 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mohan Maiya 7b0dc666 2024-07-19T15:39:42 Vulkan: Enable explicitlyEnablePerSampleShading for most vendors Bug: b/267953710 Bug: angleproject:40096890 Tests: SampleMultisampleInterpolationTest.SampleMaskInPerSample* Change-Id: I51cc393934e7fd24146ab5c94893bb3014c5c044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5726628 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7691cea7 2024-07-22T13:46:14 Vulkan: Remove seamful cubemap emulation Practically, the Vulkan backend is never expected to run on ES2 hardware. It _may_ for WebGL, but seamful cubemap emulation was disabled for webgl anyway. Bug: angleproject:354729454 Change-Id: Iafa20fbdbe232c4df4c777b12e7698ef7a87cf24 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5730143 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Alexey Knyazev 0d458614 2024-07-18T00:00:00 Vulkan: Fix PBO readbacks with small row length Use CPU path when the row length is smaller than the source area width. Fixed: angleproject:354005999 Change-Id: I5c4686ca5387a98c6137868afb19c333aed8ac21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5724591 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 975674ea 2024-07-18T00:00:00 Metal: Fix PBO readback failures with small row length Do not use blits when the row length is smaller than the source area width to avoid Metal validation failures. Bug: angleproject:354005999 Change-Id: Ifa0f29a0d1d2fb3275ea254957c24f36807e6f66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5724790 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Igor Nazarov e37c79d4 2023-11-23T15:59:12 Fix DecompressBlob() when compressed data is invalid Function uses `zlib_internal::GetGzipUncompressedSize()` to calculate the `uncompressedSize`. This size comes directly from `compressedData`. If source data is invalid or has different format, then calculated size may be any value, including 0. Zero `uncompressedSize` cases ASSERT() in `angle::MemoryBuffer::data()` and may case UB in `zlib_internal::GzipUncompressHelper()`. Bug: chromium:1485277 Change-Id: Iaa92d93a5a1b530b8686cfb544eb66075b0874e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5729953 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Yuxin Hu 85edb907 2024-07-17T19:09:09 Vulkan: Remove the adjustClearColorPrecision feature for new driver The vulkan driver issue that this feature tries to workaround is resolved in the new driver. Remove the feature workaround. Bug: b/292282210 Change-Id: I541526e71d5312f1a23b5a415e96d5b966e77f2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719652 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Solti Ho <solti@google.com> Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Cody Northrop 93491ae3 2024-06-21T08:04:24 FrameCapture: Handle active texture in MEC When restoring texture bindings and contents, we need to first set the correct GL_ACTIVE_TEXTURE, otherwise it will use existing active texture bindings and update the wrong textures. Test: Grand Mountain Adventure MEC Bug: angleproject:345851268 Change-Id: I7c6c4a918513d4216405efe51774fcce4b49b45e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5647491 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com>
Cody Northrop 0e598a0c 2024-07-17T09:49:19 FrameCapture: Unbind PIXEL_UNPACK_BUFFER for texture restore When restoring textures, we need to ensure the PIXEL_UNPACK_BUFFER is not bound, as that will influence where we pull data from. Allow per-context reset to restore the correct binding. Test: Grand Mountain Adventure MEC Bug: angleproject:345851268 Change-Id: I636f3780f8454d04152ff7bf7ba15d039ee41872 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5718285 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com>
Cody Northrop 98ff1c14 2024-07-17T09:45:03 FrameCapture: Improve buffer binding reset We aren't correctly tracking and resetting buffer bindings, which are per-context. To restore them, we need to track the bindings at the beginning and mark them dirty. Before this we were doing it in ResetReplayContextShared based on the object dirty state. Test: Grand Mountain Adventure MEC Bug: angleproject:345851268 Change-Id: Ic3db583c88bec9c680197f71ff11fdf69efdf630 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5610332 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Igor Nazarov 86b22745 2024-07-17T19:05:51 Vulkan: Fix mPipelineCache is not initialized after terminate Very old regression: https://chromium-review.googlesource.com/c/angle/angle/+/1683807 Problem happens only if call `eglInitialize()` again on terminated display without also calling `eglGetDisplay()`. Note: calling `eglGetDisplay()` on terminated display will call `setupDisplayPlatform()`, which will destroy old `mImplementation`. Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.InitializeDrawSwapTerminateLoop* Bug: angleproject:3318 Change-Id: I94bc7eba97be2d9b194c1a22a37662a2836f60b4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5717753 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gregg Tavares 62d9f847 2024-07-17T13:27:07 Speed up UniformBuffer support on Metal If the sizes are different but all fields match then only padding remains. So, as long as the buffer can safely handle the offset and size of usage, allow drawing without converting the uniform buffer. Fixed: angleproject:348270693 Change-Id: I91196ca9839cf064b573d912f125ff4879a85b02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5719193 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Auto-Submit: Gregg Tavares <gman@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 9968e98c 2024-07-16T00:00:00 Metal: Fix compute path for 16-bit PBO readbacks Added 16-bit normalized pixel formats to internal copy shaders. Fixed and simplified floatToNormalized usage for signed inputs. Bug: angleproject:352700368 Change-Id: Icbb79381991c6621004d53706b97662d33c25cd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5717929 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1db80b88 2024-07-10T12:47:42 Reland "Vulkan: Use VK_KHR_dynamic_rendering[_local_read]" This is a reland of commit c379ff48043a47e444c388c45270db40d3172d50 Original change's description: > Vulkan: Use VK_KHR_dynamic_rendering[_local_read] > > Bug: angleproject:42267038 > Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:42267038 Change-Id: I083e6963b5421386695e49a9872edbb2016c9763 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691342 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 1f87cbc9 2024-07-15T13:07:35 Vulkan: Fix late-added resolve attachment tracking Resolve attachments may be added after the fact to a render pass due to glBlitFramebuffer or eglSwapBuffer. Previously, only the resolve image views were tracked by the render pass, and otherwise the state tracking (layout, content defined, etc) treated the resolve images as generically written-to by the render pass. As a result, the render pass was unable to finalize the layout of the resolve images early. Optimizing the layout of the swapchain image when the surface is multisampled for example was not done due to this issue. In this change, when resolve attachments are added late, they are tracked identically to when they are added at the beginning of the render pass, fixing the issues described above. Bug: angleproject:42265625 Bug: angleproject:42266019 Change-Id: I765560762bb8caf39ba1096fb028177201c082d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5707470 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang c4274d54 2024-04-29T11:47:34 WebGPU: Add pipeline creation and caching. Bug: angleproject:342213825 Change-Id: I303f193d30fd6b9820efaefcae64e11042888009 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5497535 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Charlie Lao 58a56ca4 2024-07-16T11:26:44 Vulkan: Restrict VkEvent to TBRs VkEvent has much bigger overhead. Until we know that it helps desktop GPUs, we restrict it to TBRs. Also enabled for SwiftShader so that we get more test coverage in bots. Bug: b/336844257 Change-Id: Ie1859a515c9969ca37f07eae0ff729dd934eb26e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5714391 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 84c77437 2024-07-15T16:41:17 GL: Disable GL_KHR_blend_equation_advanced on various devices Intel desktop OpenGL drivers fail tests for advanced blend. Skia also disables usage of this extension on Intel drivers. Disable on older Qualcomm and ARM devices following Skia's blocklists. Bug: angleproject:42267098 Change-Id: I7642017d06e11ad0651fba6f1ec5cc3f589700ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5709950 Reviewed-by: John Stiles <johnstiles@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shrek Shao 9880af58 2024-07-09T13:59:54 GL: Fix map input buffer out of range in streamAttributes Early return when validating map range size for input attribute buffer fails. Bug: b/349653220 Change-Id: I75ac73c58abb469f0757978175fde53cd012df31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5690279 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 85875b96 2024-07-11T14:59:27 Fix validation regarding cube map array dims When defining cube map array textures, the depth represents the number of layer-faces, and does not change with mip level. * Updated validation for glTexImage3D(). * The width and the height for a mip level should not exceed the max cube map size for that mip level. * The depth limit has been set to max 3D texture size (similar to glTexStorage3D()) * The spec states that this limit should be at least the value of the implementation-based constant MAX_RECTANGLE_TEXTURE_SIZE. * Added unit tests to check multiple cases for cube map array validation for TexStorage3D, TexImage3D, and TexSubImage3D. Bug: b/338621235 Bug: angleproject:42262247 Change-Id: I0857e68de02238ffd288e34879fb7dfa6e3f545f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5698571 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu a8eded77 2024-06-26T12:58:25 Vulkan: remove unused function Bug: b/293297177 Change-Id: I9eeda38b78cc68eae3f65571b82b62e5ea45ad61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5659504 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Steven Noonan 06921c61 2024-07-08T12:13:40 vulkan: filter out devices with insufficient API version We weren't taking the version into consideration inside ChoosePhysicalDevice, but RendererVk really cares about that and will error out if the selected device doesn't meet the minimum API version requirements. Frontload some of that API version check work in ChoosePhysicalDevice, giving it the opportunity to find a device that matches the requirements. Bug: angleproject:351866412 Change-Id: I471e93b03eca5e18e98202f9848ba0fd1b55d5a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686556 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov df90bbc5 2024-07-12T18:04:53 Refactoring: move angle::HashMap and HashSet to own header Underlying abseil includes pull in a large set of headers Bug: angleproject:42266508 Change-Id: Icee47143a8a59bb0795a054b67c0aa4ddcfca4d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5704137 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao a5161f01 2024-06-04T15:46:04 Vulkan: Enable event based image barrier This CL enables VkEvent based image barrier for all GPUs. The testing result on HK3 shows manhattan31_off score impoves ~5%. We can exclude certain barrier insensitive GPUs if needed. Bug: b/336844257 Change-Id: Iebc4957dbb683637c9314e706be31d3376ee15aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5634089 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Imran Ziad 24322b7d 2024-06-28T20:10:34 Vulkan: feature for cached non-coherent for dyn/stream buffers On platforms lacking cached coherent memory, ANGLE falls back to non-cached coherent memory for dynamic/stream buffers. This impacts CPU readback performance. Add VK feature preferCachedNoncoherentForDynamicStreamBufferUsage. When enabled, ANGLE prioritizes cached non-coherent memory for these buffers. Enable this feature for Intel Meteorlake SOCs. Bug: b/347601787 Change-Id: If62af9f3df57c0bcebf18af747cac56e45f93ea7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667457 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 8ed4d427 2024-07-11T00:00:00 Metal: Remove link tasks dependency on context Bug: angleproject:351165323 Change-Id: If9e5d141cb15a6fc6df8a5fd9a2cfe70efe19dfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5701902 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Roman Lavrov 245c1243 2024-07-12T14:28:31 Revert "Disallow read color type conversions for norm16 formats" This reverts commit e5b442dedd8030d64a6ca2cb34ba0ec37895adfa. Reason for revert: Broke Skia tests; possibly not going for this any more, as discussed on https://issuetracker.google.com/351644552#comment11 Original change's description: > Disallow read color type conversions for norm16 formats > > OpenGL ES is not supposed to convert 16-bit color buffers to > 8-bit pixel types or vice versa during readPixels operation. > > Fixed: angleproject:351644552 > Change-Id: I9e51ddc82f62f958b983b5d4609f7e983a941e83 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686233 > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:351644552 Change-Id: Ib0222e4cc5eae944db96fdd3f72c8980dfe09adf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5702736 Reviewed-by: Solti Ho <solti@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Alexey Knyazev c5ab1ceb 2024-07-11T00:00:00 Metal: Remove library creation dependency on ContextDevice Bug: angleproject:351165323 Change-Id: Idc560a75e569fe917685bb247625d7df8472af46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5698885 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev a93476a1 2024-07-11T00:00:00 D3D11: Pass 3D slice index to Image11::copyWithoutConversion 3D slice range is passed in a D3D11_BOX structure for CopySubresourceRegion. Fixed: angleproject:352467349 Bug: angleproject:352496176 Change-Id: Ie96d9567cf73b0612bfb1cbd7fbacc6c0f01dec4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5697425 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Charlie Lao 6578b9c0 2024-07-09T17:19:47 Vulkan: Exclude compute/preFrag only access images from event This further restricts VkEvent usage for certain usage patterns. If image is only used by compute, use VkEvent also will not benefit it since compute itself can not overlap with compute (assume there is only one compute engine and compute work can not overlap with each other). Similarly this also applies to KPreFragment stages. Basically after this CL, use of VkEvent is limited to usages that crosses different execution units (modeled against tiler based GPUs where there are pre-fragment stages and fragment stages and compute and all others). Before this CL, we are seeing performance regression with antutu_refinery and streets_of_rage_4 due to overhead of VkEvent, which is fixed with this CL. Bug: b/336844257 Change-Id: I5ca5d813daefe9bfcaf48f831340cdf9559f8104 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5692760 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 402c8ccd 2024-06-26T19:28:21 Vulkan: Limit VkEvent for images that has fragment access only One of the problem with VkEvent is that the overhead comes with VkCmdSetEvent causes some app traces regress performance. The goal in this CL is to further limit VkCmdSetEvent to images that that we think are potentially subject to the pipeline bubble. The bubble usually occurs when accesses are alternated between different stages, specifically a mix between vertex/transfer/compute/fragment. If all accesses are from fragment shader or color attachment, then use VkEvent will not be beneficial, but only adds extra overhead. This CL adds the heuristic tracking for image access. Every time an image is used, a bit is used to indicate the usage involves fragment only or not. A bitfield is used to track the window of the history of the usage. When image is used (usually at the time queueSerial is set), we shift the history bits left and the new bit is added to the right most bit. If all accesses are from the fragment shader or color attachment, then no need to use VkEvent. For example, if a texture is always sample from fragment shader only, then VkEvent will not used. Another common usage is you render to it and then texture from it, it will also excluded from VkEvent with this CL. Bug: b/336844257 Change-Id: I175194f30b8f1d9b8fbf38ad594778474548016f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5664170 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov eda67d7e 2024-07-11T11:16:08 Avoid including fstream from angleutils.h SaveFileHelper is mostly useful for / specific to FrameCapture, so move it there. The other couple of uses just write a string. Bug: angleproject:42266508 Change-Id: Ia1dcd4531f9d5671f40611a1887dcfe7c5dbc1ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5696025 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Steven Noonan 87e9ee9c 2024-07-08T14:07:05 egl: add missing extension string for D3D LUID This extension was never announcing itself. Bug: angleproject:351866412 Change-Id: I9a6e4aae1ea3a8aba49ed036cb7cc14ec1a9151f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686555 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Shahbaz Youssefi 584fbcee 2024-07-10T12:43:34 Vulkan: Rework swap-time barrier logic Avoids unnecessary transitions when overlay is enabled Bug: angleproject:42267038 Change-Id: I0534911c0142c5e94cf3be112283fb98fcde0f6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691346 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 373ac541 2024-07-10T11:14:47 Vulkan: Make surface RP check independent from framebuffer object With dynamic rendering, there is no framebuffer object, so checking whether the currently open render pass belongs to the window surface (at swap time) is made independent from these objects. Bug: angleproject:42267038 Change-Id: I408e2376ba865b64fa1e8890316e8f57c08c695f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691345 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f7620039 2024-07-10T10:21:11 Vulkan: Prepare syncval suppressions for dynamic rendering Removing mentions of vkCmdBeginRenderPass and such. Bug: angleproject:42267038 Change-Id: Ibba2c15249b154fb11b116ef75ee6f20e08e4d00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691343 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 867697b7 2024-07-09T10:43:02 Vulkan: Add ImageHelper::onRenderPassAttach helper function RenderPass attachments has one difference compared to other images. The QueueSerial has to be set first so that we can detect an image is being used as attachment. But the layout is delayed until the endRenderPass time. This CL adds a onRenderPassAttach API to set the queueSerial so that we have a central place to adding other code if needed. Bug: b/336844257 Change-Id: I894fff83745691e8167a295c71cbc2e1d22f1343 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5689452 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 9ca3ed37 2024-07-08T16:48:51 Vulkan: Let ContextVk::onResourceAccess uses retainImage Right now ContextVk::onResourceAccess calls retainResource for everything. Mean time we also have a retainImage() function, which adds a bit confusion to why we have two retain API. This CL moves retainImage from CommandBufferHelperCommon to OutsideRenderPassCommandBufferHelper and RenderPassCommandBufferHelper so that ContextVk::onResourceAccess can use retainImage directly. The slightly behavior difference between RenderPassCommandBufferHelper and OutsideRenderPassCommandBufferHelper's retainImage is from compute shader's image access, which we are using VkEvent to track images, mainly due to we tailor VkEvent to the manhattan's usage case, which involves compute. Bug: b/336844257 Change-Id: Id3fb694f683289a4720cc279387dbc27642745de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686352 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi 95e66307 2024-07-08T15:39:58 Resolve compilation during program link resolve Currently, it seems that Program::resolveLink() itself does not resolve shader compilations (Shader::resolveCompile()). Therefore, in case of many shader compilations without them being destroyed, this can result in extra memory usage. * During resolveLinkImpl() of a program, the compilation of the attached shaders are resolved after successful linking in order to save memory. Bug: b/342012929 Change-Id: Iaa6f02a6d2fb3dbd6306660609faa29e73fe82a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5684826 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 7d461b21 2024-07-10T14:11:53 Revert "Vulkan: Use VK_KHR_dynamic_rendering[_local_read]" This reverts commit c379ff48043a47e444c388c45270db40d3172d50. Reason for revert: Regresses CPU perf and memory when _not_ using DR Original change's description: > Vulkan: Use VK_KHR_dynamic_rendering[_local_read] > > Bug: angleproject:42267038 > Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: angleproject:42267038 Change-Id: I3865f0d86813f0eeb9085a92875a33bd449b907f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5691337 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev e5b442de 2024-07-04T00:00:00 Disallow read color type conversions for norm16 formats OpenGL ES is not supposed to convert 16-bit color buffers to 8-bit pixel types or vice versa during readPixels operation. Fixed: angleproject:351644552 Change-Id: I9e51ddc82f62f958b983b5d4609f7e983a941e83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686233 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 0679b3eb 2024-07-09T18:55:35 Manual roll vulkan-deps from 17d345a0f23d to 1d4b1061b004 (24 revisions) Suppressing a new sync hazard warning Manual roll requested by romanl@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/17d345a0f23d..1d4b1061b004 Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/5939e32b87487fa9c72ab336ebfcc5ae26d9ab6d..42d9adf50b4ad7db2a7212318068ec614b36414f https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/00c49e3b56cc9748228d2e5b0d1e8e9c4409a02f..88194ef2d87683f963e735793f20ad1ebce70bc5 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/216574bedb80d439c2533d161e7ea7897504bbb6..9f2ccaef5f70c32bcd6c911a2b09dbb26106b437 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/190d2cb24e90e5bf2bec0a75604a9b3586485b6d..6c539b2ed2dba2997cdedeac0b376ff2fe382595 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/df78ee39d2ff6c10b4f7f2ae06c7ca64524f9e25..d13c1ee715c4674237aca1c775479e1edde87d3c https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/96fb5396040477fbbffdc1b4439dea9447f59d80..d03e2bca31b298fc911f7c89cfaf24d28904492d If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,romanl@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:352094384 Tbr: romanl@google.com Change-Id: If9da3b32eb405aba8472a020be0c3fd732656f27 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5689521 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Igor Nazarov 6052d0f4 2024-07-03T15:17:23 Vulkan: Fix EGL_EXT_buffer_age with single buffered surface The specification: 4) What is the buffer age of a single buffered surface? RESOLVED: 0. This falls out implicitly from the buffer age calculations, which dictate that a buffer's age starts at 0, and is only incremented by frame boundaries. Since frame boundary functions do not affect single buffered surfaces, their age will always be 0. Test: angle_end2end_tests --gtest_filter=EGLBufferAgeTest.SingleBuffer* Bug: angleproject:3529 Change-Id: Iab5da26d1bce56d928398cc250d900465fc5d261 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5675986 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c379ff48 2024-06-10T22:01:57 Vulkan: Use VK_KHR_dynamic_rendering[_local_read] Bug: angleproject:42267038 Change-Id: I1f4eb0f309992a9c1c287a69520dadf5eff23b26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637155 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 8c546d35 2024-06-25T12:49:40 Vulkan: Limit VkEvent for usage matters for Manhattan31 only If we use VkEvent to track all image operations causes performance regression on some app traces, including manhattan10 trace. This mainly because of CPU overhead comes with VkCmdSetEvent, mostly inside vulkan driver. These app traces likely not benefit from VkEvent because the specific bubble (false dependency) does not manifest on these app traces, but the CPU overhead takes a performance toll on it. In order to strike a balance between benefit and overhead, this CL removes most of VkEvent usage and only leaves the ones that matters for manhattan31. The only we still keeps are generateMipmap, dispatchCompute, texture sampling. We can always add more if more beneficial usage cases comes up and no regression in other traces. Bug: b/336844257 Change-Id: I346fe70bc33e57edf04e933a2db0f79738c4481d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5654737 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2a87db69 2024-07-06T22:20:40 Vulkan: Remove unused render pass closure reason Bug: angleproject:42266019 Change-Id: I1c516b88677d7c9d3e97e9fd7525cf727be50cc3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5678940 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 6c6975af 2024-07-05T12:28:54 Manual roll vulkan-deps from 5fdd3da87369 to 17d345a0f23d (10 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/5fdd3da87369..17d345a0f23d Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/704107fda3827377f00e57dff0c21da019bff4ae..5939e32b87487fa9c72ab336ebfcc5ae26d9ab6d https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/2acb319af38d43be3ea76bfabf3998e5281d8d12..41a8eb27f1a7554dadfcdd45819954eaa94935e6 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/973e791a9ac122f903c2796349a538b278cbe29b..216574bedb80d439c2533d161e7ea7897504bbb6 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/afeb91d6d2110717b8c842081eff410617aed1ef..96fb5396040477fbbffdc1b4439dea9447f59d80 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC abdolrashidi@google.com,angle-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Tbr: abdolrashidi@google.com Change-Id: I2e1c6204e675eb8e70ed68dbe13b912bd6ffce6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5678939 Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Alexey Knyazev 1dd3a4c4 2024-07-04T00:00:00 D3D11: Use built-in position for gl_FragCoord.z on SM 4.0+ If supported, used built-in pixel position input for the gl_FragCoord.z value. Exposed GL_EXT_clip_control only on feature level 10_0 or higher. Fixed: angleproject:347737886 Change-Id: I272ccce04cf6ad7921aa6cd5dc13f0de2f9ae561 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5679787 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev fe02de25 2024-07-04T00:00:00 Metal: Remove MTLGetMSL dependency on context Bug: angleproject:351165323 Change-Id: Idf56665cce67dcf51ac4d6148212786bcc398b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5678417 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang fcf3a1c0 2024-07-02T16:33:28 GL: Allow shader compilation with cached translated source Write the translated shader source when serializing shaders. This does not increase the size of the shader cache because Vulkan only uses the compiledBinary field. Spawn a ShaderTranslateTask for loading shaders so the GL backend can compile the shader on the native driver. Bug: angleproject:350779978 Change-Id: I14413a7ca2a0d99653a1082f2c8b4a94cf58626a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5672740 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 7d61980e 2024-06-26T18:39:53 Vulkan: Rename DescriptorSetLayoutDesc update() to addBinding() The `update()` method is never actually used to update the exiting bindings (but rather to add new ones), this change renames the method to `addBinding()` and adds few ASSERTs for clarity. Also, after recent changes in `DescriptorSetLayoutDesc` class, some changes made by `update()` method are irreversible. It is possible to have different descriptions that will produce same layout if use `update()` to rewrite the existing structure. Bug: angleproject:8677 Change-Id: If85eb2b271bc06843ee9326c024d73801d3da091 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5676345 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang a4f3f6bf 2024-07-02T16:25:05 GL: Simplify members of ShaderGL. It does not need to store anything except the shader ID. Everything else can be queried from the context. Bug: angleproject:350779978 Change-Id: I202ae8e59e8c5b10ffb24f5454151b17818d400c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5672739 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev b7d4c5d1 2024-07-04T00:00:00 Metal: Disable fast math if isinf or isnan are used Fixed: angleproject:42266714 Fixed: angleproject:42267063 Change-Id: Ibf6508ffc7d458a6b91b9218b2b488b6aa5b1001 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5678416 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Geoff Lang b6456334 2024-04-02T15:03:17 Reland: GL: Support KHR_blend_equation_advanced Combine blend equation setting when they are equal. It is invalid to set advanced blend equations for color/alpha separately. Emit blend equation layout qualifiers. This is an unchanged reland of https://chromium-review.googlesource.com/c/angle/angle/+/5415033 and depends on a GL dispatch table fix in https://chromium-review.googlesource.com/c/angle/angle/+/5670963 Bug: angleproject:42267098 Change-Id: Id669cf98ec2b7d46eab174717964f8d6daf88b29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5659200 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang ef2c9665 2024-07-02T11:25:17 GL: Fix dispatch table for desktop-only entry points In gl.xml, each extension and entry point within the extension can express which API it is supported in. The dispatch table generator was ignoring the per-entry point support information and assuming deferring to the extension-level support. Extensions like EXT_blend_minmax which only adds glBlendEquationEXT on desktop GL would overwrite the blendEquation entry point with a non-existant (null) glBlendEquationEXT on GLES. This also simplified the lack of KHR suffixes on desktop GL since they are listed with the proper desktop-only api requirements in gl.xml. Bug: angleproject:42267098 Change-Id: I906969335d5b82831dd82699d910f444afa68cd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5670963 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 78ee33e4 2024-07-01T15:42:55 Roll third_party/dawn/ 6cdf3a1a1..eb249b37e (310 commits; 3 trivial rolls) We need to roll in https://dawn-review.googlesource.com/c/dawn/+/196054 to ublock rolling libc++ into ANGLE. Add special handling of Undefined WGPU formats due to also rolling https://dawn-review.googlesource.com/c/dawn/+/193360 https://dawn.googlesource.com/dawn.git/+log/6cdf3a1a195f..eb249b37e3e8 $ git log 6cdf3a1a1..eb249b37e --date=short --no-merges --format='%ad %ae %s' 2024-07-01 blundell [Vulkan] Set the Vk descriptor type correctly for YCbCr samplers 2024-07-01 blundell [Vulkan] Map FilterMode to Vulkan filter correctly for YCbCr info 2024-07-01 dawn-autoroll Roll vulkan-deps from 773555d3bd22 to 4a2ff9e87700 (1 revision) 2024-06-30 dsinclair [hlsl] Handle compute builtins for ShaderIO transform. 2024-06-30 dsinclair [hlsl] Add some existing transforms 2024-06-29 jrprice [msl] Regenerate test expectations 2024-06-29 dsinclair [hlsl] Split module var structs and arrays. 2024-06-29 dawn-autoroll Roll vulkan-deps from 2796aaff7eef to 773555d3bd22 (9 revisions) 2024-06-29 cwallez opengl: Add support for EGL_EXT_pixel_format_float. 2024-06-29 kainino Summarize CTS failures as first line of first max-severity log 2024-06-29 jaswant.panchumarti Do not turn off CMAKE_CXX_EXTENSIONS 2024-06-28 rafael.cintron Disable render passes on Windows until support can be detected 2024-06-28 enga [headers] Remove the Flags enums and make them 64-bit 2024-06-28 dsinclair [hlsl] Stub out the DecomposeMemoryAccess IR transform. 2024-06-28 cwallez opengl: Add support for EGL_KHR_no_config_context. 2024-06-28 jaswant.panchumarti Disable GLFW_INSTALL 2024-06-28 jaswant.panchumarti Add third_party/google_benchmark/src in fetch_dawn_dependencies.py 2024-06-28 jaswant.panchumarti Always build glslang as static library 2024-06-28 dawn-autoroll Roll vulkan-deps from 7ff358e64e2b to 2796aaff7eef (10 revisions) 2024-06-28 enga Fix Wayland build 2024-06-28 dawn-autoroll Roll ANGLE from 46dd6457f4bf to a674dc1dae8f (3 revisions) 2024-06-28 dawn-autoroll Roll DirectX Shader Compiler from 206133c9e7e1 to 49d1ae9a029c (1 revision) 2024-06-27 bsheedy Mark problematic expectation block as KEEP 2024-06-27 rharrison [tint][fuzz][ir] Implement test case disassembler 2024-06-27 dsinclair [hlsl] Add transform to remove struct and array initializers to lets. 2024-06-27 enga Re-number enum values part 2 2024-06-27 rharrison [tint][fuzz][ir] Batch process files when generating corpus 2024-06-27 cwallez GL: Add support for wgpu::Surface. 2024-06-27 jrprice [tint] Fix UB in FileContent copy constructor 2024-06-27 dsinclair [hlsl] Add ValueToLet transform. 2024-06-27 dsinclair [hlsl] Add ShaderIO transform. 2024-06-27 jaswant.panchumarti Use dawn_add_library function to create the dawn_glfw library 2024-06-27 jaswant.panchumarti Use dawn_add_library function to create the dawn_utils library 2024-06-27 jaswant.panchumarti Use dawn_add_library function to create the dawn_wire library 2024-06-27 jaswant.panchumarti Use dawn_add_library function to create the dawn_native library 2024-06-27 dsinclair [glsl] Extract textureBuiltinFromUniformData 2024-06-27 dawn-autoroll Roll vulkan-deps from 1c484942880c to 7ff358e64e2b (4 revisions) 2024-06-27 hans Fix std::vector<const T> 2024-06-27 dawn-autoroll Roll ANGLE from 0bf157f12bb8 to 46dd6457f4bf (5 revisions) 2024-06-27 dsinclair [glsl] Extract combinedSamplerInfo 2024-06-27 jrprice [fuzz] Skip PixelLocal with multiple entry points 2024-06-27 jrprice [tint] Pre-clone symbols in IR->AST pass 2024-06-27 jrprice [fuzz] Add TextureBuiltinsFromUniform precondition 2024-06-27 jrprice [tint] Fix collision check in multiplanar fuzzer 2024-06-27 jaswant.panchumarti Use dawn_add_library function to create the dawn_platform library 2024-06-27 jiawei.shao Fix crash when using constant expression as `@blend_src` 2024-06-26 rharrison [tint][ir][fuzz] Convert assembler to generating test case protos 2024-06-26 jaswant.panchumarti Use dawn_add_library function to create the dawn_proc library 2024-06-26 dawn-autoroll Roll ANGLE from 046327343595 to 0bf157f12bb8 (5 revisions) 2024-06-26 dawn-autoroll Roll DirectX Shader Compiler from e5183a06b913 to 206133c9e7e1 (1 revision) (...) 2024-06-17 dawn-autoroll Roll SwiftShader from 085997ddb08b to cea33ab2d5ad (1 revision) 2024-06-17 jimblackler Integration test in the library. 2024-06-17 dawn-autoroll Roll vulkan-deps from 897d900fc1b1 to 7f05a36fb6d9 (1 revision) 2024-06-17 dawn-autoroll Roll DirectX Shader Compiler from 206b7c2e537a to 8c3f40c0ae12 (1 revision) 2024-06-17 dawn-autoroll Roll ANGLE from d521dd08bef4 to 7f70cd0da27c (1 revision) 2024-06-16 dawn-autoroll Roll vulkan-deps from 1bd6201121db to 897d900fc1b1 (1 revision) 2024-06-15 jimblackler Alternate way of generating the bindings inside Gradle. 2024-06-15 jimblackler Fix for incorrect import path for webgpu.h. 2024-06-15 jimblackler Move 'Util' to a new location, and convert to Kotlin. 2024-06-15 dawn-autoroll Roll vulkan-deps from dd296c842e50 to 1bd6201121db (7 revisions) 2024-06-15 dawn-autoroll Roll ANGLE from bcb567a7f8e4 to d521dd08bef4 (7 revisions) 2024-06-14 hitawala [YCbCr Samplers] Get supported SampleTypeBit for external format 2024-06-14 senorblanco OpenGLES: more end2end test cleanup. 2024-06-14 enga Fix wgpu::Status return value for wgpuSurfaceGetCapabilities 2024-06-14 kainino Use ityp::array for sVertexFormatTable 2024-06-14 dawn-autoroll Roll vulkan-deps from 42ee85cf2154 to dd296c842e50 (2 revisions) 2024-06-14 dawn-autoroll Roll Depot Tools from 88a72320ed30 to 1d1f17af898b (4 revisions) 2024-06-14 dawn-autoroll Roll DirectX Shader Compiler from 56f3c4038159 to 206b7c2e537a (1 revision) 2024-06-14 enga Remove 0-value enums that aren't ever valid 2024-06-14 dawn-autoroll Roll ANGLE from 973e5261a0fd to bcb567a7f8e4 (7 revisions) 2024-06-14 senorblanco Revert "Make a convenience cpp method for WaitAny with one future" 2024-06-14 dawn-autoroll Roll vulkan-deps from 7db4057407f4 to 42ee85cf2154 (8 revisions) 2024-06-14 enga Make a convenience cpp method for WaitAny with one future 2024-06-14 dawn-autoroll Roll Depot Tools from 43c6415bced9 to 88a72320ed30 (3 revisions) 2024-06-14 beaufort.francois Make GPUAdapter GetInfo() a suitable replacement for GetProperties 2024-06-14 rharrison [tint][ir][fuzz] Disable building IR fuzzer when ASAN is enabled 2024-06-14 enga AHB: Don't add storage binding unless AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER 2024-06-14 dsinclair [hlsl] Fix incorrect HLSL test output 2024-06-14 rharrison [tint][ir][fuzz] Fix breakage of fuzz_cmd target for CMake 2024-06-13 dsinclair [hlsl] Add HLSL IR printer var/let tests 2024-06-13 dsinclair [ir] Add a templated `zero` helper. 2024-06-13 dawn-autoroll Roll ANGLE from 65f8dc8e3ad8 to 973e5261a0fd (5 revisions) 2024-06-13 dsinclair [hlsl] Add generated IR expectations. 2024-06-13 jrprice [msl] Regenerate E2E expectations 2024-06-13 lehoangquyen D3D11: split Buffer class into GPUOnlyBuffer and StagingBuffer 2024-06-13 senorblanco OpenGLES: enable/triage misc end2end tests. 2024-06-13 chouinard Remove storage textures from vertex tests 2024-06-13 chouinard Disallow textureStore in vertex shader tests 2024-06-13 chouinard Replace textureStore test with frag shader 2024-06-13 jrprice [msl] Add polyfill for textureNumSamples 2024-06-13 jrprice [msl] Add polyfill for textureNumLayers 2024-06-13 jrprice [msl] Add polyfill for textureSampleCompare 2024-06-13 jrprice [ir] Strip all IO attributes in ShaderIO transform 2024-06-13 fdurso SampleUtils: Add missing newline in output message 2024-06-13 wong.kl.matthew dawn/node: Update documentation for ASan CMake builds. 2024-06-13 dawn-autoroll Roll DirectX Shader Compiler from 4353db3983e2 to 56f3c4038159 (2 revisions) 2024-06-13 ynovikov Revert "d3d: Change D3D references to PhysicalDevice to WeakRef instead of Ref" 2024-06-13 dsinclair [hlsl] Add HLSL IR printer constant tests 2024-06-13 dawn-autoroll Roll vulkan-deps from 7d45b6d174eb to 7db4057407f4 (13 revisions) 2024-06-13 dawn-autoroll Roll Depot Tools from c0883c509ea3 to 43c6415bced9 (3 revisions) Created with: roll-dep third_party/dawn Bug: chromium:323708866, chromium:349411322, dawn:42241166 Change-Id: Iad65ef83c0ec47a6aba3fdc7de511ff22f586d4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667168 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi e86ba9ab 2024-06-26T13:38:18 Vulkan: Fix querying support of prim restart patch * Added a cap to reflect support for primitive restart for patches. * primitiveRestartForPatchesSupported * In Vulkan, it is determined through the following component from the existing related device feature: * primitiveTopologyPatchListRestart * Updated querying PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED via glGet(). * Now it is only available on ES 3.2 or if tessellation shaders are supported. Otherwise, there will be a validation error. * It returns primitiveRestartForPatchesSupported. * Added a unit test that queries this value and ensures that it remains the same regardless of whether primitive restart is enabled. Bug: angleproject:349610458 Change-Id: If43a5326f0886cf10e38b4e73a868f46b1052533 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5661108 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mark Lobodzinski 3813e805 2024-06-21T14:29:55 Add env var/property control of API dump layer Layer is now included with all debug/assert builds or when specified through GN arg. VK_VULKAN_API_DUMP_LAYER on desktop, or for android set debug.angle.enable_vulkan_api_dump_layer to 1. Also included some renaming since layers other than validation are supported. Bug: angleproject:8623 Change-Id: I2bb976dede53712f781a531d0c4f3ce4d33f052c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5649937 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi a674dc1d 2024-06-21T14:48:06 Unify updating cached color/read render targets Currently in updateColorRenderTarget(), there are two calls to update cached render target if the read RT is the same as the color RT, which means getting the same attachment RT twice. In case it is the same attachment, there can be one call to update both. * Updated updateColorRenderTarget() so if the read attachment and the color attachment are the same, it will only get the attachment RT once. Otherwise, it will update the read RT separately. Bug: angleproject:348704287 Change-Id: I9ff9fb2a4edbd4420feece0ee6edd40f1f7efdca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5647497 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 46dd6457 2024-06-25T15:56:15 Vulkan: Use DONT_CARE ops for missing D/S aspects Simplifies op tracking with dynamic rendering. Bug: angleproject:42267038 Change-Id: I394c154d94458c470190fea66d82c408e6f33725 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5655873 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Liza Burakova 3e997419 2024-06-25T18:41:03 Add format conversions for WebGPU formats. This CL adds a Format class, as well as a generator script to generate methods to map between WebGPU and ANGLE formats. Fallback mappings are listed but this CL only implements support for required webgpu formats. Bug: angleproject:344814096 Change-Id: I2588a57353eafc4e87f40df3bbe3f9375e5ed8c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5598178 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 85e2e6a9 2024-05-08T12:31:37 WebGPU: Add Window and Pbuffer surfaces. Bug: angleproject:342213844 Change-Id: I58465bdf895b4bab63ec3c74e326c6be4827bf60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525974 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 04632734 2024-06-20T17:23:27 Add EGL query option for minor version * Added the following: * EGL_CONTEXT_MINOR_VERSION * Added since EGL 1.5 * EGL_CONTEXT_MAJOR_VERSION * Another alias for EGL_CONTEXT_CLIENT_VERSION. * Added unit tests to query major and minor versions. Bug: angleproject:349179609 Change-Id: I99989c0f9f6659995caf9d7987551b97d477f22f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5648675 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi df7bda5c 2024-06-21T13:27:08 Disable MSRTSS if not supported for RGBA * Support for MSRTSS is checked for RGBA8 and RGBA8_SRGB during renderer initialization. * In the case of lack of support, this feature is disabled. * preferMSRTSSFlagByDefault is disabled if MSRTSS is not supported at all. Bug: angleproject:348181798 Change-Id: If1bf27f53a61f4fd67576c426ab07f4e2304fbe9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5647495 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 8b1daa18 2024-06-24T14:22:22 Vulkan: Fix MSRTT failure from undef addnl format In TextureVk::initImage(), for formats that do not have an SRGB equivalent, such as some D/S formats, additionalViewFormat becomes VK_FORMAT_UNDEFINED. For those textures, FormatSupportsUsage() returns false for MSRTSS, which leads to an error in some test cases. * Added the condition that, to determine MSRTSS support, additional format is ignored if it is undefined. * Unsuppressed affected tests that should now be fixed. Bug: angleproject:348181798 Change-Id: I739b630ac7d0230e2506f6f13b8cb9b3b50d175f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5651860 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 0ccc018e 2024-06-20T10:20:08 Reland GL: Avoid calling glBindFragDatalocationIndexed on Qualcomm Track if the output location and index came from a layout qualifier or from a call to glBindFragDataLocation[Indexed] and only call glBindFragDataLocationIndexed in the latter case. Re-binding a location that was already specified in the shader is not allowed. Qualcomm can fail when trying to bind locations using the API when the output variable is an array or uses a non-zero index. Only call glBindFragDataLocationIndexed when the user specifically uses it to avoid failed links when all outputs should be implcitly assigned. Assign the ProgramOutput::pod::index field when doing output assignment to mirror how the location is assigned. Bug: angleproject:42267082 Change-Id: I72cdb73dd4c5edea4ad1229ca75c0c7926344d1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5645123 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 3c472b45 2024-06-20T13:17:32 Vulkan: Fail if texture bound to MSRTT w/o support * If a texture is already bound to an MSRTT framebuffer, but MSRTSS is not supported by the driver for that format, it leads to failure. Bug: angleproject:348181798 Change-Id: I685ca552b9c53b06f33065ba594d81cfa7b25b4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5644215 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mohan Maiya 6f33eddc 2024-06-20T18:05:49 Vulkan: Bugfix in FindSupportedFormat Account for vendors that do not support any image fallback formats Bug: angleproject:42261363 Change-Id: I2a6b1a724e52d9fa75444ff154986b49de612d32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5646126 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 48969c95 2024-05-31T16:34:07 GL: Implement QCOM_tiled_rendering Bug: angleproject:343900918 Change-Id: I01612e11795d7aa8ee20f6e9bd5ef62fe40e2910 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588630 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 3be15cb0 2024-06-21T13:52:20 GL: Limit uniform block size to 64KB This change works around an inefficiency in ANGLE when the uniform block has a large size. That will be fixed in a follow up, but in the meantime this clamping makes ANGLE more uniform on different vendors (most of which expose this limit as 64KB already). This also aligns with the strategy adopted by the Vulkan backend. Bug: angleproject:346561003 Change-Id: Id23a1f1bbbc1c7224c432d5bee1c4989ff2c92b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5645627 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 12028222 2024-06-20T00:00:00 Metal: Clear visibility result buffer before use Ensured that the current visibility pool buffer does not contain previous results if it was used before. Fixed: angleproject:348206830 Change-Id: I8dbc36626ef8267d5466c96405dac0da2754cb6d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5643453 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang e3c8d57b 2024-06-21T11:55:21 GL: Fix glClearTexImage for LUMA textures We need to transform the format and type before handing it off to the driver for emulated texture formats. Bug: angleproject:347047859 Change-Id: Ifa2c92179a49fbd8ae152a365c2915091102e4e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5645626 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 3f572905 2024-06-19T17:46:38 Add basic begin/end support for perf counters The AMD_performance_monitor extension has explicit begin/end calls to capture counters. This was not implemented in ANGLE and the tests were relying on ANGLE always capturing counters (incurring a small overhead). This change does not complete the implementation of that extension, but does add basic support for starting and stopping perf counter measurements. While inactive, most counters are not updated. Bug: angleproject:42267038 Change-Id: I3ff6448b22ca247c217401cb2d76ef4142c9d759 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5639343 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi e53b3ad7 2024-06-17T15:23:55 Vulkan: Extend coherent adv blend to emulated path * blendEquationAdvancedCoherentKHR is now also enabled if the following features are enabled to emulate ABE: * emulateAdvancedBlendEquations * supportsShaderFramebufferFetch * Relevant tests: *GLES31.functional.blend_equation_advanced.coherent* * On some Android devices: From "Not supported" to "Passed" Bug: angleproject:42262258 Change-Id: I4d97438df774f0752b9f30c5807cb3cc20ede076 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5631144 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi a1dea207 2024-06-13T11:40:39 Implement KHR_blend_equation_advanced_coherent * Updated the validation for glBlendBarrier() and ~KHR(). * GL state now includes mBlendAdvancedCoherent. * Updated glEnable() to accept GL_BLEND_ADVANCED_COHERENT_KHR. * It can be queried via glGetIntegerv(), etc. * EXTENDED_DIRTY_BIT_BLEND_ADVANCED_COHERENT added. * Added a corresponding bit to ExternalContextState. * If coherence is supported, there should be no need to use blend barriers, as, based on the spec, the advanced blend ops should then follow order like the basic blend ops. * Relevant tests: *GLES31.functional.blend_equation_advanced.coherent* * On Linux/NVIDIA: From "Not supported" to "Passed" Bug: angleproject:42262258 Change-Id: I7e0e43bdc71524eec111c2d3b024fe73c9795e55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5634381 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>