src


Log

Author Commit Date CI Message
Igor Nazarov 65d674b0 2024-12-02T18:36:11 Vulkan: Must run UnlockedTailCall from flush and finish `glFlush` and `glFinish` may call `WindowSurfaceVk::swapImpl()` implicitly when the current Window Surface is in the single buffer mode. The `WindowSurfaceVk::swapImpl()` in turn may add unlocked tail call in order to perform CPU throttling. It seems, that CPU throttling is only possible if also enable the `EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID` attribute (using `VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR`). Without this attribute (`VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR`) `vkQueuePresentKHR()` performs implicit waiting for GPU, making ANGLE's throttling uncessary (the serial is already finished). This fix allows running the tail call from `glFlush` and `glFinish` (because these APIs are not performance critical). Alternative solution may instead perform the CPU throttling immediately if the `WindowSurfaceVk::swapImpl()` is called from the `WindowSurfaceVk::onSharedPresentContextFlush()`. Additionally, added "ASSERT(!any())" at the beginning of each entry point. This is to catch scenarios, if some API adds the unlocked tail call and for some reason exit without checking the assert of running the call. Test: angle_end2end_tests --gtest_filter=EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture Bug: angleproject:42266581 Change-Id: I418c552f6e95b4cfc01db738c9989533377f1050 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063719 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Charlie Lao d81834b6 2024-11-26T15:25:35 Vulkan: Store VkDevice in vk::SharedPtr So that we don't need to have two versions of destroy() APIs. In previous CLs I had to add another version of destroy() that does not take device argument due to SharedPtr may calls destroy when last reference count goes away. Because we do not have device information at that time, destroy() API was added but mostly just doing assertion that Vulkan object has been explicitly destroyed. With this CL, we now stores device in the SharedPtr so that we no longer need two destroy() APIs. The explicit destroy(device) call will be removed in the next CL. Bug: angleproject:372268711 Change-Id: Idcacbc3a922e17ac3d0f6056466b8f3aa084b02e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6052096 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton 7070a9e9 2024-11-20T00:21:16 Remove draw buffer validation clauses from PLS It was cumbersome to implement all this validation browser side for WebGL. Rather than making it an error to update blend and color mask on reserved PLS draw buffers, glBeginPixelLocalStorageANGLE() can just implicitly disable blend, and enable the color mask on overridden draw buffers. Later calls to enable blend or change the color mask on overridden planes are silently ignored until glEndPixelLocalStorageANGLE(). Bug: angleproject:40096838 Change-Id: Ic7e1c5113e7d3fad3b80d0178075df646540d743 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6045421 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Yuly Novikov f7cac0bb 2024-03-07T18:05:27 Start Win NVIDIA experiment On Windows 10 22H2 with 31.0.15.4601 driver. Suppress test failures on the new platform. Use-Permissive-Angle-Pixel-Comparison: True Bug: chromium:40805707, angleproject:42267037, angleproject:381211730 Bug: angleproject:377923479 Change-Id: I1b457e11de10daa081bb0dac9f564b6cce97164a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352750 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Robic Sun f51170b3 2024-11-21T16:30:40 Enable GL_KHR_texture_compression_astc_hdr Vulkan supports GL_KHR_texture_compression_astc_hdr, so this extension can be enabled in Angle. Bug: angleproject:379186304 Change-Id: I438a120c3f884a7eefcd883ad71abf68f81cb473 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038457 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Panfeng Hou d57b1d30 2024-11-28T11:09:53 Vulkan: Support GL_OES_required_internalformat Only export 'GL_OES_required_internalformat' in GLES extension. Bug: angleproject:364069034 Change-Id: I6198b7b79fc2853c7585ebff183016ee110a25e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055198 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov e7eb8e27 2024-11-29T13:10:18 Skip TextureFixedRateCompressionTest.Invalidate on Pixel 6 Fails on AP1A.240405.002 Vulkan Bug: angleproject:352364583 Change-Id: Ie9d1e5998cb8692c68fe015dc76ee629b2e2f70f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055168 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Alexey Knyazev a2d76f03 2024-11-28T00:00:00 Add GetTexLevelParameterTest.Levels end2end test Bug: angleproject:376497150 Change-Id: Id14663f6fb1fd64edc439e695953d4a4a3b9f853 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6056029 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b31f367a 2024-11-28T16:11:33 Vulkan: Keep old VVL suppression until roll into Chromium Bug: angleproject:336652255 Change-Id: Id12e86862cde613cbf3c87557532b2bf23da1838 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6056751 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shufen Ma 3f312d98 2024-11-04T14:04:50 ES31: GetTexLevelParameter{if} validation for TEXTURE_2D_MULTISAMPLE GL_INVALID_VALUE is generated if target is GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_2D_MULTISAMPLE_ARRAY, or GL_TEXTURE_BUFFER, and level is not zero. Bug: angleproject:376497150 Change-Id: Ib05ef30a04699e590804d1059387a6920c38971c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982239 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xinyu Fang 5d3d299d 2024-11-25T16:35:51 Expose the required GLES1.0/1.1 extensions in ANGLE Exposed below extensions: GL_OES_texture_mirrored_repeat GL_OES_blend_subtract Bug: angleproject:380704155 Change-Id: Ib095f9bfaabda92bb2c588d633f1512e118f066e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038450 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll e10220f8 2024-11-28T18:24:35 Manual roll vulkan-deps from 3c7156644de7 to 0e28d467e76d (59 revisions) Manual roll requested by syoussefi@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/3c7156644de7..0e28d467e76d Also rolling transitive DEPS: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/1f1ef7560399322558793d91a53b34cdd34f4fe1..0099ed6ad09a78b083c93be9369791dd72cf8a33 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/45b314049d6262c850cc873c8f9a30f41a1e0c13..36d5e2ddaa54c70d2f29081510c66f4fc98e5e53 https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/ea1d8cd9814852428d25d3ea113683a6c9686afb..7d5bc35197be75e10000f14ea9eb3954ca2b0aab https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/f864bc6dfe6229a399566e979c16795386d0f308..9dff1f571ce25b92639854b89b28539602b6b97b https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader/+log/4cd2a86fa6a88abfcf44a7630212fc375fbe0fe5..2534c1e2327990e55f51b8a1f8328085e8e3ff31 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools/+log/df2ac1bb61f09a80db979d7108adf07b6fe55913..a2224abf350f61211462a33e5b540201fa17de0d https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/c31e717dcd817279e9e90516612f9dbfc84b0e51..b538fb5b08513aa78346cd414ad5e576a2a3e920 https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/fdbdd359fb2bbb50352e84b259171813957d1ee3..b61aa3f59711c9a45e6bac13f70c61dc9e4650c8 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,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 Tbr: syoussefi@google.com Change-Id: Ieecaf46ecf017defffaca78bb003b0b7dcf094f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6058269 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 01dee1cb 2024-10-14T15:04:28 Add implementation for GL_EXT_texture_storage_compression Bug: angleproject:352364583 Change-Id: I3dab4c68d5d0206d681e165e991217bd3de8eeb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011055 Auto-Submit: Neil Zhang <Neil.Zhang@arm.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8b7bb82c 2024-11-28T13:20:52 Vulkan: Disable dynamic vertex input state on Qualcomm Observed bugs on S23. Bug: angleproject:381384988 Change-Id: I9a8cd754de23f31c4bd1078f0c52f66111a8fc45 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055889 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
angle-autoroll 0f9c146b 2024-11-28T09:47:35 Roll Chromium from c957bc3555b2 to b640856c0ed4 (1228 revisions) Update VK-GL-CTS's _XOPEN_SOURCE version on Apple from 600 to 700 due to https://github.com/llvm/llvm-project/issues/117630 https://chromium.googlesource.com/chromium/src.git/+log/c957bc3555b2..b640856c0ed4 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/chromium-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 Chromium: https://bugs.chromium.org/p/chromium/issues/entry 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 Changed dependencies * build: https://chromium.googlesource.com/chromium/src/build.git/+log/77bbb5dc9c..7ed11c6746 * buildtools: https://chromium.googlesource.com/chromium/src/buildtools.git/+log/38a60f7635..9a87238031 * testing: https://chromium.googlesource.com/chromium/src/testing/+log/f1ccfe587d..b05f90caa7 * third_party/abseil-cpp: https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp/+log/be9e355580..a79aaef505 * third_party/android_build_tools: https://chromium.googlesource.com/chromium/src/third_party/android_build_tools/+log/e4eee387b5..52438668cc * third_party/android_build_tools/error_prone/cipd: nAUL9xKY6JWQyjoK2O_mKTqLakmTU69EX-FROc-rzNEC..n2Qwqs0Jr17AMpoYGTDACFHIM0aPsdm8g3X0jBjfDQoC * third_party/android_build_tools/lint/cipd: qft_MiuWKisqUw9hZCFTuJKi5jBZaexi7LbGkgRmrpkC..Hd1-tpL2M67CYclO3F_3WjBf70hE_XYr7tEXt0wQyvgC * third_party/android_build_tools/manifest_merger/cipd: CIvskXU9WjZMXUINb-D8kgUKUDSf6G1G1QmCja7qOa4C..zC9JbLx2HVKIMFxavlF00isXwHx72vIkFlRCLvH0rIkC * third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/497f6b7429..6a0960fe97 * third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/584e8366be..bd7f36598e * third_party/libc++/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git/+log/291ce60cce..76cb1e3b4a * third_party/llvm-libc/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git/+log/9aff6762a3..e6303c7ffe * third_party/r8/cipd: lrcfrwv2WpEoHAk051sZiwXxKxnNIUTYYEwM3oBDlhMC..GaYs9HP0ijqgwtd-Zv0Ee7R8HCzWR4LUzNNxBoTxdQUC * third_party/rust: https://chromium.googlesource.com/chromium/src/third_party/rust/+log/92e2247154..cecd4aabb2 * tools/android: https://chromium.googlesource.com/chromium/src/tools/android/+log/5510558641..1ff4269915 * tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang.git/+log/6834b3fdbb..768236a7b2 * tools/perf: https://chromium.googlesource.com/chromium/src/tools/perf/+log/c84318b6c0..d6a5c65a46 No update to Clang. Bug: angleproject:364069034 Change-Id: I1cff11e0ebb80eae2a1f62be842796cb29e45a8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6056956 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao 6c1021ec 2024-11-22T16:48:45 Vulkan: Switch DescriptorSetLayout to use AtomicSharedPtr SharedPtr has better semantics and safer to use. This CL removes direct exposure of RefCounted object and also allows me to delete BindingPointer class in later CL. Bug: angleproject:372268711 Change-Id: I08a0dff3efcf794be843a4a548b9f2609bb9a5e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044328 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 4aaeffd8 2024-11-25T11:33:30 Metal: Limit simulator texture size to 8k Regressed in commit d44204893a1725a74cd20b332fbb6f595b0975c3. Bug: angleproject:380712807 Change-Id: Ic5e298412b35451e87b76f70d5b1b253ed1406cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039222 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Charlie Lao 2dc072ec 2024-11-22T16:14:52 Vulkan: Switch PipelineLayout from AtomicBind* to AtomicSharedPtr AtomicSharedPtr/SharedPtr has better semantics and safer to use. This will allow deleting BindingPointer in later CL. Bug: angleproject:372268711 Change-Id: Ife20f68b2277a1913b06be0de153770214ac964a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044326 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 87d61997 2024-11-21T14:20:55 Vulkan: Switch ShaderModule to use SharedPtr This CL gets rid of many vk::RefCounted<vk::ShaderModule> usage which is risky due to it allows you to direct manipulate reference count. Switch to vk::SharedPtr manages the reference counting automatically. Bug: angleproject:372268711 Change-Id: I14f5c509bcbd9ea7d17101637e033652a68710a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039117 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang 6451a893 2024-11-27T16:06:09 Fix minimum caps for texture gather offsets. Bug: angleproject:40096373 Change-Id: Ia5480a37eba4efa40cb602d279feaaddfa9c59c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6053597 Reviewed-by: Stephen White <senorblanco@chromium.org> Reviewed-by: Stephen White <senorblanco@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6f28cb15 2024-11-26T15:59:21 Fix minimum caps for draw buffers and compute invocations. Framebuffer and blend state code asserts that draw buffers > 0 so unconditionally set it to 1. It's increased to 4 in the ES3 block. Fix the value of MAX_COMPUTE_WORK_GROUP_INVOCATIONS, it was incorrectly copied from the spec. Bug: angleproject:40096373 Change-Id: I471fa7e8dddd9bca755daf8ce5834ed60ec4e629 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6052094 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Stephen White <senorblanco@chromium.org>
Alexey Knyazev 5288ed36 2024-11-26T00:00:00 GL: Enable ANGLE_texture_multisample on OpenGL ES Trivially enabled on supported device contexts. Improved readablility of conditions for implicit GLSL version upgrades. Fixed: angleproject:381113379 Change-Id: I843f7119da2a3cffb255af97f654d714add9f482 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055117 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xin Yuan b6b826b3 2024-11-27T09:57:18 Add stubs for GL_EXT_EGL_image_storage_compression Bug: angleproject:352345943 Change-Id: I993a7908e868019852c0d682bf2131e46a2cf304 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6051521 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 8597a5fd 2024-11-27T13:54:25 Skip TextureMultisampleTest.MaskedDrawWithSampleID on S22 Bug: angleproject:380475003 Change-Id: Id55f6a38d3cb8ec44ecbcd2f8eeabe80a7aeb220 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055418 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuly Novikov 9c7ad319 2024-11-27T13:43:10 Revert "Delay EGLQueryContext render buffer change" This reverts commit 233d9ee5c3525cc8290b3af52385ed59973438b4. Reason for revert: ASSERT triggered on Linux NVIDIA 535.183.01 https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/1469/overview Original change's description: > Delay EGLQueryContext render buffer change > > According to the EGL spec, EGL_RENDER_BUFFER of a context > should change after eglSwapBuffers is called if > eglSurfaceAttrib changes. Refine ANGLE implemnetation > to delay the render buffer change. > > Bug: angleproject:375528202 > Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241 > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:375528202 Change-Id: I08fc76b1b764e57639e2c0708cb155d392f82f22 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055417 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Yuxin Hu 2e25ea1e 2024-11-13T13:59:51 Add a new mutex in CommandQueue to protect Vulkan Command Pool Before this change, the CommandQueue::mMutex protects both: 1. Members of CommandQueue class, e.g. mInFlightCommands. 2. Operations on the same command pool and command buffers allocated from the same command pool. If one thread accesses resources 1, the other thread is doing operations in 2, they could be blocked by each other. For example, if thread 1 calls eglClientWaitSync() to check if certain commands finish execution (accessed resources in 1.), while thread 2 calls eglMakeCurrent() to flush commands (issue operations in 2.), thread 1 could be blocked by thread 2. This is against the egl spec where eglClientWaitSync() should return immediately when timeout passed to the call is 0. To fix the problem, this change creates a new class CommandPoolAccess that wraps operations in 2, and protects command pool and command buffer operations with a new mutex mCmdPoolMutex. With this new mutex, thread 1 and thread 2 would take different locks and not blocked by each other. Bug: b/362604439 Change-Id: Iccf0ae65809ccb0f593c5e318fde03e89e0c0fa3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6020895 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Matthew Denton c796c571 2024-11-26T15:05:10 Disable BasicUniformUsageTest.* on Linux Intel WGPU for now Bug: angleproject:376553328, angleproject:360083331 Change-Id: I03d2722d4e7754e38ec6d616b983bb6e5a71f845 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6043406 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Alexey Knyazev ea6e6b9f 2024-11-25T00:00:00 Capture/Replay: Fix GetTexLevelParameterivANGLE buffer size That function returns only one value. Bug: angleproject:42264181 Change-Id: I9cc53ba48de0b98aa5ecce8593466c0f523ba322 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6049082 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 239ef680 2024-11-21T00:00:00 Metal: Support ANGLE_texture_multisample * Added explicit multisample texture creation support * Added support for SAMPLE_MASK frontend state * Adjusted Metal backend caps Fixed: angleproject:380475003 Change-Id: I90250e14da52869cb954b5a61d9c670e958a526c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6048958 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Yuxiang Qian c56867ec 2024-10-28T17:18:19 Refine sRGB support GetNonLinearFormat should return the format itself if format is non-linear. Also, for linear colorspace, sRGB render target should be supported. Bug: angleproject:377144464 Change-Id: I1179a3dbf67b619bae276e607bc61a85c1639c17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982242 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Yuxiang Qian 233d9ee5 2024-10-24T18:24:14 Delay EGLQueryContext render buffer change According to the EGL spec, EGL_RENDER_BUFFER of a context should change after eglSwapBuffers is called if eglSurfaceAttrib changes. Refine ANGLE implemnetation to delay the render buffer change. Bug: angleproject:375528202 Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 7a1da65f 2024-11-25T00:00:00 Fix GetTexLevelParameter validation * Adjusted ValidTextureTarget and ValidTexLevelDestinationTarget helpers to allow multisample 2D array target on unextended OpenGL ES 3.2 contexts. * Adjusted ValidTexLevelDestinationTarget helper to disallow 2D array, 2D multisample, and 3D texture targets when the corresponding functionality is not available. * Removed redundant texture object validation from ValidateGetTexLevelParameterBase. * Adjusted ValidateGetTexLevelParameterBase to disallow parameters not available in the current context. Fixed: angleproject:380291920 Change-Id: Id2fcd1e2c81be25f1d545d213bd2508185592f20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6049081 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Igor Nazarov cecefe53 2024-11-21T22:11:17 Vulkan: Improve recreateSwapchain() error handling The `WindowSurfaceVk::recreateSwapchain()` method may fail in many points. After failing, state of `WindowSurfaceVk` may become invalid, causing undefined behavior. Invalid state examples: - Skip adding `cleanupData` into the `mOldSwapchains` while `mPresentHistory already cleared (resource leak). - `mSwapchain` may remain `VK_NULL_HANDLE` after the failure. - `lastSwapchain` may be not retired, causing subsequent swapchain creation to fail. Change adds `mLastSwapchain` member to continue tracking last created swapchain during the `mSwapchain` recreation process until it is retired. This process now may span multiple API calls. The `mSwapchain` pointer is invalidated as soon as recreate starts - to indicate that we do not have usable swapchain and still need to create one. Notable difference with the old code is that old swapchain and present history are now collected into the `mOldSwapchains` after new swapchain is created (or old swapchain is retired in case of a failure). Because of this, code can now be simplified and easily refactored into a separate method. The `kMaxOldSwapchains` is now also checked after old swapchain is collected - this is to prevent resource leak if `finish()` fails. Added `cleanUpOldSwapchains()` call to reduce a chance of hitting the `kMaxOldSwapchains` limit. Change also renamed `presentOutOfDate` parameter where it does not always make sense. As a side effect, fixed a bug when calling `prepareForAcquireNextSwapchainImage()` with true, is then replaced with false in the `computePresentOutOfDate()` call. Bug: angleproject:380234227 Change-Id: Ie6d85c1b9760cda68c8fc9368235756659a9bdac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6040159 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov f458f865 2024-11-12T16:52:42 Vulkan: Update AcquireNextImageUnlocked() implementation Main goal of this change is to simplify acquire next image operation state change tracking. Key members before this change: 1. `mAcquireOperation.needToAcquireNextSwapchainImage` 2. `unlockedAcquireResult.acquireSemaphore` Possible states: 1: 2: false NULL -> image is acquired or no need true ANY -> need to prepare for and do unlocked ANI false HANDLE -> need to process ANI result Only `mAcquireOperation.state` is used after this change. Possible states: Ready -> image is acquired or no need NeedToAcquire -> need to prepare for and do unlocked ANI NeedToProcessResult -> need to process ANI result Value of `unlockedAcquireResult.acquireSemaphore` is now only used as semaphore in the post process and not as boolean, indicating that result needs processing. Change adds a lot of ASSERTs to protect from invalid scenarios. In order for these ASSERTs to work as expected, `deferAcquireNextImage()` is now called regardless if swapchain is out-of-date or not. Another functional change is that `postProcessUnlockedAcquire()` does not mark image as processed at the start and then defers ANI in case of a failure (so the next ANI fail again), but instead keeps the current state (NeedToProcessResult) allowing failure to be processed again without repeating ANI call in case if there will be no swapchain recreation. State is set to `Ready` only after processing is successful. Bug: angleproject:42265346 Bug: angleproject:42266579 Change-Id: I4a6a66fa3b6f25a788a8959eff5848b7ec5bdd27 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6018094 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Igor Nazarov ea86503c 2024-11-20T19:47:49 Vulkan: Remove vkAcquireNextImageKHR multi-threading support Currently, it is not possible to call `TryAcquireNextImageUnlocked()` from multiple threads. However, original implementation added multi-threading support for future use. Possible future use: - First thread (where Surface is current) calls `eglPrepareSwapBuffersANGLE()` which will call `TryAcquireNextImageUnlocked()` in the unlocked tail call (without the share group lock). - Other thread (where shared Context is current) calls some EGL/GLES API under the share group lock, that may cause calling `doDeferredAcquireNextImage()` on the Surface from the first thread. Calling this method may call `TryAcquireNextImageUnlocked()` under the share group lock, while it is also called from the first thread in the unlocked tail call. Calling `doDeferredAcquireNextImage()` may also cause swapchain recreation. Taking into account above scenario, current implementation has following bugs: 1. Possibility to recreate the swapchain from other thread, while first thread is going to or calling the `TryAcquireNextImageUnlocked()` function: a) Other thread may call `prepareForAcquireNextSwapchainImage()` because `NeedToProcessAcquireNextImageResult()` is still false until first thread finishes `TryAcquireNextImageUnlocked()` call. Also, checking `NeedToProcessAcquireNextImageResult()` from other thread is not thread safe. b) Other thread finished `TryAcquireNextImageUnlocked()` first, but with `VK_ERROR_OUT_OF_DATE_KHR` error. First thread still did not get the chance to call this function because of OS's thread scheduling delays. Other thread will set `needToAcquireNextSwapchainImage = true` and will start to recreate a swapchain. At this time, first thread will start executing `TryAcquireNextImageUnlocked()`, and because bool is true - it will actually perform ANI during recreate from other thread. 2. Possibility to call `TryAcquireNextImageUnlocked()` with old swapchain. This is similar to (1), but this time call is delayed after swapchain is recreated. Since above scenario currently is not possible and the described future scenario is unlikely to ever happen, instead of fixing above problems this CL removes the multi-threading support to simplify the code and make these bugs N/A. Change removes word "try" from structures, members, and functions because without multithreading there is no need for that and just adds unnecessary complication. It also removes most of the "share group lock" mentions because now this information is irrelevant and may cause confusion. What is relevant is that `AcquireNextImageUnlocked()` MUST only be called from a thread where Surface is current and only CAN access members that is only ever accessed from this thread (regardless if the lock is taken or not). For example, if in the future `unlockedAcquireResult` will be accessed from other thread but with the share group lock held, while `AcquireNextImageUnlocked()` will still only be called from the current thread - then this will be a race condition. Bug: angleproject:42265346 Bug: angleproject:42266579 Change-Id: Ie9be408c0a3b3c1f37ec80727ce5ad2cb8932dad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6018093 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev b94d7853 2024-11-14T00:00:00 Fix TextureMultisampleTest.CheckSamplePositions end2end test The test should query positions only for the supported sample counts. Added capture support for GetMultisamplefv and GetMultisamplefvANGLE functions. Fixed: angleproject:380216733 Change-Id: I97456055ac60ada94dd75e10d7427e4448aee5e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6042141 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen bfa03a84 2024-11-19T13:32:31 Metal: Fix vec swizzles to bvecs on AMD Constructing bvecs explicitly from swizzles would produce double swizzles, and this would fail validation at validateNoSwizzleOfSwizzle. Fix by folding the expression passed to coersion bvec constructor. Cannot test more in isolation for now, since AddExplicitTypeCasts uses Metal specific SymbolEnv. Bug: angleproject:379758210 Change-Id: I175941747ef1c7acb8c88683c1188843a154aa8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034935 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Amirali Abdolrashidi c02e0184 2024-11-22T17:21:38 Add GL_ARM_rgba8 * It is a subset of GL_OES_rgb8_rgba8. Bug: angleproject:352352894 Change-Id: I07f031157344385c847cd229a85ebf59cc6dfcfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044333 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 89f7fd8b 2024-11-24T21:46:12 CL/Vulkan: Skip crashing tests Bug: angleproject:380712807 Change-Id: I34d550a1a6e216f34840910e952f64a487f81e73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6042525 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Robic Sun 9eab301c 2024-11-12T17:24:57 Enable GL_KHR_texture_compression_astc_sliced_3d ARM supports GL_KHR_texture_compression_astc_sliced_3d, so this extension can be enabled in Angle. Bug: angleproject:378507964 Change-Id: I545ac57b4d6065a9ef99a7884555da47a1d50261 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6014004 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao cb31b886 2024-11-22T13:15:57 Vulkan: pruneDefaultBufferPools when there is excessive garbage What commonly happens with game (and traces) is that we upload a lot of textures before first frame is drawn. These texture uploads uses a lot of buffer memory and creates peak memory usage moment if not clean up quickly. This CL adds back the check if there is excessive suballocation memory gets destroyed, don't wait until frame boundary to prune empty buffer blocks. Do the prune immediately so that these memory could be reused for other purpose for the first frame rendering. Bug: angleproject:372268711 Change-Id: Ie548245b5ce108be0e2c19b296a28025bface395 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6043405 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov a5dec6fe 2024-11-22T15:58:02 Tests: ANGLETestBase subclasses non-zero initialize primitives For example, a class member GLuint mPipeline; would get initialized to 0x7f7f7f7f, ~2e9, to avoid potential reliance on the value being 0 which happens often, but not always, resulting in hard-to-debug scenarios. Large number to trigger checks such as https://crrev.com/c/6042185 ANGLE tests are generally subclasses of ANGLETest <- ANGLETestBase and often use GL primitive class members, so this should apply broadly and catch newly introduced cases. This only sets the initial bytes of the allocated memory. Non-primitives or explicitly initialized members overwrite these bytes during their construction. Bug: angleproject:380296979 Change-Id: I4df47a85580548f409a7c890853050cc127cbab1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044560 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 52fa6779 2024-11-14T00:00:00 Refactor indexed parameter query validation * Moved indexed parameter validation to queryutils. * Fixed indexed blend state enums being disallowed on unextended OpenGL ES 3.2 contexts. * Replaced redundant validations with assertions. Fixed: angleproject:380291906 Change-Id: I4d5a9c01be5a00cd834504b38a3ddaeb5fa4edb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6043710 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jiawei Gu 6b9b8239 2024-11-21T15:56:40 Vulkan: fix un-initialized mCompatiblePresentModes When VK_EXT_swapchain_maintenance1 is supported but VK_EXT_surface_maintenance1 is not, mCompatiblePresentModes has no chance to be initialized. So need to set it up in such case. Bug: None Change-Id: I38ac6d9da3d6cebf2effcdcd74084a53d68a32c2 Signed-off-by: Jiawei Gu <gujiawei.will@bytedance.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6040834 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 03380548 2024-11-22T11:43:30 CL/Vulkan: Fix nullptr case for async build task Bug: angleproject:380411632 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Change-Id: Ib56c6828f59cca0d38b36ae54015c5d464753e21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6043797 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com>
Alexey Knyazev 9c202275 2024-11-14T00:00:00 Fix SAMPLE_MASK_VALUE indexed query validation The SAMPLE_MASK_VALUE enum must be accepted when ANGLE_texture_multisample is enabled. Fixed: angleproject:380291919 Change-Id: Ieb834ca4c78982fbf1a121c0a70db7413574679a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038524 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Roman Lavrov b856059e 2024-11-22T09:58:13 Tests: linux-trace logs return code with OOM note In case on the bug the replay was terminated with an empty stdout and signal handler wouldn't trigger, making it difficult to diagnose. This happened due to OOM killer (system low on memory) sending SIGKILL to the process, which can't be handled and results in termination with exit code -9. Add a note to the logs when this happens. Bug: angleproject:380296979 Change-Id: Id4db4b12c680701511430d90eee847baded03bcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6042183 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 21d747de 2024-11-20T11:54:15 Vulkan: Use vk::SharedPtr for SharedDescriptorSetCacheKey This CL switches SharedDescriptorSetCacheKey from using c++ std::shared_ptr to our internal version of vk::SharedPtr. Also get rid of an extra pointer indirection that SharedDescriptorSetCacheKey is a reference counted of actual cache key instead of std::unique_ptr of cache key. Bug: angleproject:372268711 Change-Id: Id9af5070d24f67711d6decc3a30a260b8d4062d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6036302 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 0757254b 2024-11-22T10:21:29 Tests: Add crash callback to test Replay (e.g. linux-trace) Prints a backtrace on trapped signals. Didn't help with the issue on the bug as it was an OOM -> SIGKILL which can't be trapped but generally nice to have. Also adds stdout flushes to the signal handler as stdout redirection is by default _not_ line-buffered, so without a flush the printfs just go into the buffer and don't actually show up in the redirected output (including on bots). This might be the reason we were missing backtraces in some other cases. Bug: angleproject:380296979 Change-Id: I9fbba35e3bf4e6d863139ceb533f51973fe2f98d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044040 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev a3452c24 2024-11-14T00:00:00 Fix SAMPLE_MASK toggle validation The SAMPLE_MASK enum must be accepted when ANGLE_texture_multisample is enabled. Bug: angleproject:380291919 Change-Id: I6aeb11dfbb65e6c05e493d1053679c7547c009c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039158 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 6544daec 2024-11-14T00:00:00 Fix indentation in GetQueryParameterInfo No functional changes. Bug: None Change-Id: I4807dbdb14997cddfc12147f13d9614c429a663f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6041983 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 2f7feccd 2024-11-21T17:21:45 Tests: Fix EGLSurfaceTest.SwapWithoutAnyDraw test Bug: b/275624771 Change-Id: I17516dcc44b58b8dfa659ab099327b25ac88a167 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038163 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi bc09b178 2024-11-15T13:11:04 CL: Run a subset of CTS tests on linux Bug: angleproject:372722560 Change-Id: I33980df1850384762f0a5715cc3a04314f77d60a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6026508 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 0c7c14eb 2024-11-22T10:31:45 Capture: add a sanity check to InitializeReplay4 args In the case on the bug we were getting maxProgramPipeline = 1684105299 due to an unitialized memory read, which then led to Replay OOM crash as it allocates an array of this size. This is difficult to diagnose in Replay as OOM leads to SIGKILL which cannot be trapped so we can't have a backtrace. Adding a sanity check during capture. Fix the other tests where we hit this (https://anglebug.com/380296979#comment6) One of them visible on red tests on a previous patchset in this CL: https://ci.chromium.org/ui/p/angle/builders/try/linux-trace/9871/overview https://ci.chromium.org/ui/p/angle/builders/try/win-trace/10795/overview Bug: angleproject:380296979 Change-Id: I2879c1947742a9751a122545c8ba8da23ab243cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6042185 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Gowtham Tammana 8ba71e66 2024-06-26T13:37:42 CL/Vulkan: Update few device caps based on VK caps -1- Device fence caps flags The spec requires below fence capabilities to be preset - CL_DEVICE_ATOMIC_ORDER_RELAXED - CL_DEVICE_ATOMIC_ORDER_ACQ_REL - CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP -2- Add missing param names in program query The params CL_PROGRAM_SCOPE_GLOBAL_{CTORS,DTORS}_PRESENT are missing from program query. Adding them. -3- Set max sampler and image buffer to spec min Set the max samplers and image buffer size to minimum for now. These will be changed once the image support is complete. Bug: angleproject:366412386 Change-Id: Iee2c11319c6c5b2f3a1565e06f1f09c5f770a07c Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004685 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov b18b0b02 2024-11-22T13:40:47 Skip couple non-deterministic angle_restricted_trace_gold_tests on Win Intel Vulkan. aztec_ruins aztec_ruins_high produce slightly different images once in a while. Bug: angleproject:353690308 Change-Id: Ib8043d8662b07a48ae86d731d7538153da517122 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038527 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Kimmo Kinnunen 8e9dc1a6 2024-11-19T11:08:31 Validate anonymous struct names with namespace Consider GLSL: struct { vec4 e; } g; struct sbbf { vec4 f; }; The struct name validation would fail if user chosen struct name would clash with a symbol name that ANGLE internally gave to an anonymous struct. Fix by importing Name abstraction from MSL backend. A symbol name is a pair (namespace, string). Move operator<<(std::ostream &os, const ImmutableString &str) to sh namespace because that is more natural for operator overloading name resolution. MSVC works with this. Bug: angleproject:379758201 Change-Id: Icc9b02aa8cb532e1d925e2fba4c45468f01b9144 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035029 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Kimmo Kinnunen 8409b41e 2024-11-20T14:38:30 Report error on unsized interface block array GLSL of forms: uniform S{...} a[]; in R{...} b[]; out Q{...} c[]; Should produce error unless the shader is tesselation or geometry shader. Fix the errors for VS and FS. GS and TS likely need more work. Bug: angleproject:379996129 Change-Id: Ib31c9a81717a8cd1c984eb4ce2e993d563bb3c4f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038333 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Alex Dean 10c2dc7a 2024-11-14T10:55:55 CL: Remove logic restricting CL version of passthrough backend When the passthrough backend is enabled, the OpenCL version would be manually set to <= 1.2, causing issues for workloads that specify the version number. This change enables OpenCL versions > 1.2 during passthrough. Bug: angleproject:378754053 Change-Id: I7e84ae7b492d68ba441d0c71b75847799f4b99a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022547 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana a58b35bc 2024-08-07T15:01:56 CL/Vulkan: Implement image creation from buffer object Add support for creation of image from buffer object for types image1d_buffer. At the kernel side setup texel buffer descriptor sets for these kernel arguments. Bug: angleproject:378103913 Change-Id: I600692cd003b75396afd45dcc93c568bcf390b96 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6005389 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 94eebab5 2024-11-21T17:04:54 Tests: fix ProgramPipelineTest31 unitialized memory read Specifically mPipeline was being set to 1684105299 on linux-trace CI, which then got captured as maxProgramPipeline=1684105299 leading to OOM crash of the replay attempting to initialize an array of this size*4 (~6Gb). Some tests, like BindProgramPipelineTest do not use mPipeline so it remains unitialized, and since GLuint is a C++ primitive there is no default zero-initialization. Bug: angleproject:380296979 Change-Id: I2398666f15a36d3e5ccd8aa163cc83682039b7d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6042556 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 70d1ef67 2024-11-20T11:34:39 Vulkan: Ensure onFramebufferBoundary is called for offscreen There is peak memory regression observed from crrev.com/c/6022549. What I suspect happening is that for offscreen or single buffered case, glFlush/glFinish is called but bail out because it already submitted or deferred. So we end up not calling onFramebufferBoundary(). This CL ensures we always call onFramebufferBoundary from these two functions for single buffer or offscreen. Also fixed a bug when onSharedPresentContextFlush is called we may end up calling onFramebufferBoundary. To make API names consistent, existing flushImpl() is renamed to flushAndSubmitCommands() and a new flushIMpl is added to wrap around most logic inside flush(). Bug: angleproject:372268711 Change-Id: I54eed8a81f4153d52ab962f213cacc87a73b89ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6037491 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Austin Annestrand 0dfe0a75 2024-08-30T18:59:54 CL/VK: Add writeBuffer to staging/transfer routine Adding enqueueWriteBuffer staging/transfer code/routine for the non-blocking conditions. Bug: angleproject:377545840 Change-Id: Ia2f97588a887e9ec30f8f1715b0e33b56ff97867 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6023865 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao 8e0178fb 2024-11-19T13:31:45 Vulkan: Switch SamplerBinding to Use SharedPtr Another step to remove vk::BindingPointer. SharedPtr is used and SamplerBinding is renamed to SharedSamplerPtr. This also removed RefCountedSampler to avoid direct expose of RefCounted<SamplerHelper> which is risky due to ability of change reference count directly. Bug: angleproject:372268711 Change-Id: Ia6f352186a4f75ab9ce3396f298e33f70cd61a1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6036294 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang a41b798e 2024-11-21T11:07:34 WebGPU: Ensure mDefaultBindGroup is created mDefaultBindGroup would not be created if the program has no uniforms because they are not dirty. Mark all stages as dirty after linking. Bug: angleproject:376553328 Change-Id: I1663791fa1642be052948c5acb8e403fa8b844f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039006 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 8f07cdde 2024-11-14T00:00:00 Fix NegativeTextureMultisampleTest The test checks that unextended ES 3.0 contexts reject commands related to multisample textures but it did not create an unextended context and therefore was skipped on most backends because they expose the extension. Fixed: angleproject:380088822 Change-Id: I2aab2876539fb48954e5c0055f510ca4db429245 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038826 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana e1fd42db 2024-09-02T12:53:22 CL/Vulkan: Add parent dependencies and image layout transitions In the case of memory objects derived from parent object, the dependencies need to be set for parent objects as well. Setting up those dependencies. In the case of images, there might be a layout transition needed when using them. Adding an appropriate barrier command to do layout transitions. Also, refactored all the common code of setting up dependencies in a utility function. Bug: angleproject:380188569 Change-Id: Ia46f8a7fe647bf38c86f1ea28f99d44b0416c334 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6005390 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen ec773865 2024-11-19T14:46:29 Qualifier in const for sampler2D fails validation The commit 039660a0757e8e5b661c1850747b688b6642f56d failed to special cased "const in". Fix by special casing also on EvqParamConst. Bug: angleproject:379762012 Change-Id: Ife6966ea536972874645ae22b504712249817638 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035505 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 99d5d4d5 2024-11-21T09:02:32 Tests: fix replay failure handling in linux/win-trace Bug: angleproject:42264614 Change-Id: I752fb914b82222392bf88b51351217cd4d063cd6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039443 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 594a11ac 2024-11-20T16:55:06 Tests: Add Need For Speed: No Limits trace Test: angle_trace_tests --gtest_filter="*need_for_speed_no_limits" Bug: b/380107298 Change-Id: I216574367e8e495a69c63de2ec04a6c9e3c73ff4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6037637 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Shahbaz Youssefi 770242db 2024-11-20T17:03:07 Translator: Remove the `gimage1D` base type This is a desktop GL type, whose removal was left out of b16d105fc6. Bug: angleproject:370937467 Change-Id: I0bda5453b95ddf924ba0583de346902b333603a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6037776 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1f0ac74a 2024-11-20T16:43:50 Translator: Remove SubpassInputMS ANGLE never generates multisampled input attachments, because it cannot know if the shader will be used with a single-sampled or multisampled framebuffer. The SPIR-V transformer takes care of changing the type and ops to be multisampled if needed. Bug: angleproject:37093746 Change-Id: Ic9c3057536c0a5d543512dbd3c347033453a29f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039437 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi c4533e0a 2024-11-20T16:21:40 Translator: Remove the `double` base type This is a desktop GL type, whose removal was left out of b16d105fc6. Bug: angleproject:37093746 Change-Id: I185beef71099aafc3e350efc3dad019e2a72c0e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039436 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Gowtham Tammana 3515113e 2024-06-24T15:10:28 CL/Vulkan: Remove redundant state in CLImageVk Much of the image state can be queried from the front-end object. Removing all the redundant state from CLImageVk. Bug: angleproject:378103913 Change-Id: I7783674da891d1af768375e5d8efd1937c4a4177 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004687 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana 10e073a2 2024-06-07T11:04:02 CL/Vulkan: Capture an event for async build task Capture an event that could be waited on for the async build events. Bug: angleproject:378103914 Change-Id: I19fcc20a4fe034a8f0429edd56c84cf3269201ba Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6005392 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao ce53aff0 2024-11-05T16:57:57 Vulkan: Add per descriptorSet LRU cache eviction Before this CL, the descriptor set cache eviction is at the pool level. Either the entire pool is deleted or not. It is also not LRU based. This CL adds a per descriptor set cache eviction and reuse evicted descriptorSet before allocating a new pool. This eviction is LRU based so that it is more precise. The mCurrentFrameCount is passed into various API so that it can make eviction decision based on the frame number. In this CL, anything not been used in last 10 frames will be evicted and recycled before allocate a new pool. Since eviction is based on individual descriptor set, not by pool, ProgramExecutableVk no longer needs to track the DescriptorSetPool object. mDescriptorPools has been removed from ProgramExecutableVk class. As measured by crrev.com/c/5425496/133 This LRU linked list maintenance does not add any measurable time difference, but reduces total descriptorSet pool count by one third (from 75 down to 48). running test name: "TracePerf", backend: "_vulkan", story: "batman_telltale" Before this CL: cacheMissCount: 200, averageTime:23998 ns cacheHitCount: 1075445, averageTime:626 ns descriptorSetEvicted: 0, descriptorSetPoolCount:75 Average frame time 3.9262 ms After this CL: cacheMissCount: 200, averageTime:23207 ns cacheHitCount: 1025415, averageTime:602 ns descriptorSetEvicted: 102708, descriptorSetPoolCount:48 Average frame time 3.9074 ms BYPASS_LARGE_CHANGE_WARNING Bug: angleproject:372268711 Change-Id: I84daaf46f4557cbbfdb94c10c5386001105f5046 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5985112 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi ecfa4874 2024-11-20T00:41:03 Assert no GL errors at the end of image tests Bug: angleproject:42265697 Change-Id: Iac9241d0fbe384b10fc0b0f6b2f764efca674ac3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6032805 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 3b3783bc 2024-11-18T16:42:47 Reland "Possibly fix FixedQueue.ConcurrentPushPop flakiness" This is a reland of commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a Reverted CL increased flakiness because of incorrect `ASSERT` expressions present in the original code and which should have been also corrected. The fix itself had no new issues. This CL additionally fixes these `ASSERT` expressions. Suspected source of flakiness in both tests is the possibility to call `q.pop()` while `q.empty()` is true. Original fix added check for `enqueueThreadFinished` to break from the loop. New fix instead of checking for `enqueueThreadFinished` to break from the loop, checks if `q.empty()` is true. This change allows processing already pushed values even if the enqueue thread already finished. It is applied to both tests. Additional changes not related to fixing the flakiness: - `std::time()` replaced with `angle::GetCurrentSystemTime()` because `std::time_t` may be integer (Android) while `timeOut` is double. This is confusing. For example, if set `timeOut = 0.5` - actual timeout will still be one second. - fix enqueue thread to actually reach the maximum capacity. - improve dequeue thread to prevent updating to the same of greater capacity. - add extra `ASSERT` checks. - make code in both tests consistent with each other. Original change's description: > Possibly fix FixedQueue.ConcurrentPushPop flakiness > > Queue may be empty when `enqueueThreadFinished` become true. > > This is same as the previous fix for `ConcurrentPushPopWithResize`: > https://chromium-review.googlesource.com/c/angle/angle/+/5823039 > > Change also removes always true expressions from the > `ConcurrentPushPopWithResize` test. > > Bug: b/302739073 > Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: b/302739073 Change-Id: I8f3840326f3fceed044fa188245772a5ff7b638d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038334 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Mark Lobodzinski 99aac4b9 2024-11-20T09:24:07 Capture/Replay: Remove implied exts from RequiredExtensions Support for the EXT_compressed_ETC1_RGB8_sub_texture extension can be implied from the presence of OES_cmpressed_ETC1_RGB8_texture, so remove it from the trace's RequiredExtensions entry in its json file. Test: angle_trace_tests --gtest_filter=*need_for_speed_no_limits* Bug: b/380026310 Change-Id: Ia80ae4d78c1f7f7f246ce7a5cfd00bfc0e9734a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6037487 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Igor Nazarov 17904b43 2024-11-19T16:37:43 Vulkan: Restrict EGL_ANDROID_front_buffer_auto_refresh support Original functionality supported scenario where `VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR` and `VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR` modes may be incompatible, requiring a call to `deferAcquireNextImage()` method in order to cause swapchain recreation without swap. The `eglSurfaceAttrib()` may be called from any thread, this means that `deferAcquireNextImage` may be also called from any thread - which is not thread safe. This CL restricts exposing the extension only when VK_EXT_swapchain_maintenance1 extension is also supported, where present modes expected to be compatible on Android, so no need for swapchain recreation and therefore - `deferAcquireNextImage()` call. Not requiring to call `deferAcquireNextImage()` improves thread safety of `WindowSurfaceVk::setAutoRefreshEnabled()` method. There is still race condition accessing `mDesiredSwapchainPresentMode` but it will be addressed in a separate CL. Bug: angleproject:42265697 Bug: angleproject:379762019 Change-Id: I4631c736188eb52a5476e1a2bed3439d49cf12d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035187 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov c4ec8dbb 2024-11-19T17:01:42 Vulkan: Expose EGL_ANDROID_front_buffer_auto_refresh Original CL implemented the functionality without exposing the corresponding extension. This CL exposes the extension on Android and adds necessary validation. Bug: angleproject:42265697 Change-Id: Ia01c68f04c41a850e531aa7b889de9e561f3a9db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035186 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 74f74b63 2024-11-14T10:07:34 Vulkan: Add ContextVk::onFramebufferBoundary() function This makes a more formal API to track frame boundary. Also adds a uint32_t mCurrentFrameCount to track the total number of frames rendered so that we could use for heuristic purpose. Bug: angleproject:372268711 Change-Id: I153497403ed0d8fde18f1786186ce600df60c514 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022549 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 087cc411 2024-11-14T11:05:14 Vulkan: Add mRenderer to ShareGroupVk class For convenience, instead of passing renderer to shareGroupVk's API, keep mRenderer in SharGroupVk class at constructor call. Bug: angleproject:372268711 Change-Id: I9534f7dbe24121856221b89ccf8fc6a353bbb0cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022548 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi d2e543c7 2024-11-18T14:21:28 Vulkan: Consider PowerVR hardware coherent for framebuffer fetch Bug: angleproject:377923479 Change-Id: I5a51b0d82e55c6153dfcaa240aa08456560f2c7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6032832 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Geoff Lang d8e183ab 2024-11-19T13:23:35 Skip the antutu_refinery perf test on Windows/Intel This test times out on this bot due to the excessive complexity and memory requirements of the trace. Bug: angleproject:379886383 Change-Id: I1ecf12429cd70f436fc83cf89a84c225d315aac6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6033296 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov e961f7ab 2024-11-19T16:28:07 Skip KHR-GLES31.core.texture_stencil8.multisample on S22 Bug: angleproject:379700129 Change-Id: Idc6a1fef8c66b375cae12409b54c2ead1159ea29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035510 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov d81d29e1 2024-11-19T15:53:16 Revert "Possibly fix FixedQueue.ConcurrentPushPop flakiness" This reverts commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a. Reason for revert: more flakiness seen on Pixel 6 and Samsung S22 Original change's description: > Possibly fix FixedQueue.ConcurrentPushPop flakiness > > Queue may be empty when `enqueueThreadFinished` become true. > > This is same as the previous fix for `ConcurrentPushPopWithResize`: > https://chromium-review.googlesource.com/c/angle/angle/+/5823039 > > Change also removes always true expressions from the > `ConcurrentPushPopWithResize` test. > > Bug: b/302739073 > Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: b/302739073 Change-Id: Iefd994d5a69d2f4add13485d586384814e5e3dd5 No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6033739 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Roman Lavrov 42f9c200 2024-11-19T08:50:35 Comments: www.anglebug.com -> anglebug.com The former doesn't work. Bug: None Change-Id: Ib16b005adb5b61a3a1277588e240c3d68705205c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034293 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gowtham Tammana 987cc0de 2024-08-06T12:16:37 Vulkan: Add release utility for BufferViewHelper Add a release helper that doesn't require ContextVk for BufferViewHelper. Bug: angleproject:378103913 Change-Id: Ib468d152501ecaec1dd71c9c6ed5527b73a1afa5 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004686 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana dc8b2e2b 2024-06-26T12:44:06 CL: Pass in memory properties from cl entry point The spec requires the valid properties to be reported as by `clGetMemObjectInfo()`. So pass in the properties as is post their validation. Bug: angleproject:378017028 Change-Id: I8b7ddc9d0e71ea56b2f8d81764fc3a21cee6bef4 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004684 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 743dd7bf 2024-11-06T12:29:36 CL: Add some event/memory helper functions Add the following helper functions on the CL frontend - check for user event - check for CL image/buffer types And on the VK backend - For CLBufferVk/CLImageVk much of the state is encoded in the front-end object. Add utility functions to get handle to them. - check for user event dependency in commandqueue Bug: angleproject:378103912 Change-Id: Ie76b44445ce2db3b5a49ccc6afe02e75c474875d Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004683 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 518e162e 2024-11-15T00:07:14 Fix validation for 3D depth/stencil textures They should fail with GL_INVALID_OPERATION: > Textures with a base internal format of DEPTH_COMPONENT, DEPTH_STENCIL > or STENCIL_INDEX are supported by texture image specification > commands only if target is TEXTURE_2D, TEXTURE_2D_MULTISAMPLE, > TEXTURE_2D_ARRAY, TEXTURE_2D_MULTISAMPLE_ARRAY, TEXTURE_CUBE_MAP or > TEXTURE_CUBE_MAP_ARRAY. Using these formats in conjunction with any > other target will result in an INVALID_OPERATION error. Bug: angleproject:379674017 Change-Id: Icdd4cea24601f6744a3a85bdf8ef07946569a16f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6019830 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 174694c1 2024-11-16T02:15:55 Manual roll VK-GL-CTS from f674555ab03e to b27686793f88 (29 revisions) Manual roll requested by yuxinhu@google.com https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/f674555ab03e..b27686793f88 2024-11-14 syoussefi@google.com Use std functions instead of de* wrappers (deString.h) 2024-11-14 mateusz.bahyrycz@mobica.com Add coverage for instanced draws with tessellation 2024-11-14 rgarcia@igalia.com Test alpha-to-coverage with sample shading 2024-11-14 mateusz.gawrysiak@intel.com Fixed ycbcr_sampler.graphics array tests by adding combinedImageSamplerDescriptorCount multiplication 2024-11-14 scerveau@igalia.com EncodeTests: rework the result queries 2024-11-14 scerveau@igalia.com EncodeTests: set the decoder to use layeredDpb 2024-11-14 mateusz.gawrysiak@intel.com Fix imageFormatProperties check before VK_FORMAT_G8_B8R8_2PLANE_420_UNORM array creation 2024-11-13 yuxinhu@google.com Add #include <cmath> in glcTextureStorageTests.cpp 2024-11-08 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (draw_buffers_test1), PART 14 2024-11-08 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.11 into vk-gl-cts/main 2024-11-08 piotr.byszewski@mobica.com Test operations which must always preserve denorms 2024-11-08 ziga@lunarg.com Add image concurrent copy tests 2024-11-08 piotr.byszewski@mobica.com Test DRLR with DS attachments that use one aspect 2024-11-08 ziga@lunarg.com Add host image copy tests with array and depth offsets 2024-11-08 benjamin.cheng@amd.com Create encode DPB image without TRANSFER_SRC usage 2024-11-08 benjamin.cheng@amd.com Fix video-profile-independent DPB creation 2024-11-08 lionel.g.landwerlin@intel.com Enable device-only events in sync2 tests 2024-11-08 kamil.goras@mobica.com KHR-Single-GL46.enhanced_layouts.varying_locations breaks spec and requires more than GL_MAX_GEOMETRY_INPUT_COMPONENTS components in geometry stage for some test cases. Such cases are skipped. 2024-11-08 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (texture_stencil8_gl44), PART 16 2024-11-08 gleese@broadcom.com Revert "Fix support check for dynamic state tests" 2024-11-08 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.10 into vk-gl-cts/main 2024-11-04 gleese@broadcom.com Fix frag_coord_conventions test when not supported 2024-11-01 michal.jakubek@mobica.com Make vktComputeBasicComputeShaderTests.cpp buildable 2024-10-31 mateusz.bahyrycz@mobica.com Remove commented code 2024-10-31 piotr.byszewski@mobica.com GPL with unusual multisample states 2024-10-31 mateusz.bahyrycz@mobica.com Add coverage for indirect draws with tessellation 2024-10-31 javed@igalia.com Add coverage for mesh shader with GPL/ESO 2024-10-31 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS (texture_storage_compressed_texture_data), PART 15 2024-10-31 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.10 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,solti@google.com,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Tbr: solti@google.com,yuxinhu@google.com Change-Id: I617a3b8a149bd157e3d922b0dc726bf395a4b27e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6027274 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 828e2d19 2024-11-16T14:41:10 Tests: Add Block Blast trace Test: angle_trace_tests --gtest_filter="*block_blast*" Bug: b/379456572 Change-Id: I751b69320f68dc4afaa6fdd29e054fb543c43d22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6026306 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Tingwei Guo f21cfcd6 2024-11-07T14:54:12 Add a corner case for framebuffer fetch Add a defect test to test that when a shader reads from gl_LastFragDepthARM or gl_LastFragStencilARM and no image is attached to the depth or stencil attachment, respectively, results should be undefined, instead of generating an error. Bug: angleproject:376572258 Change-Id: I7ea0e5021ec370374c4da532b0fa58277f3e959e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5999877 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 8a2b60b2 2024-11-06T17:13:16 Add stubs for GL_EXT_texture_storage_compression Bug: angleproject:352364583 Change-Id: I607c19c0c9bec7f0e3dd325e44b42e73f826b61c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998012 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 84b17554 2024-11-18T16:42:47 Possibly fix FixedQueue.ConcurrentPushPop flakiness Queue may be empty when `enqueueThreadFinished` become true. This is same as the previous fix for `ConcurrentPushPopWithResize`: https://chromium-review.googlesource.com/c/angle/angle/+/5823039 Change also removes always true expressions from the `ConcurrentPushPopWithResize` test. Bug: b/302739073 Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 51ff063c 2024-11-16T12:03:28 Skip real_racing3 trace on Linux NVIDIA SYNC-HAZARD-WRITE-AFTER-WRITE with 535.183.01 driver Bug: angleproject:377923479 Change-Id: I5791445bc36dacd6b71cd001d4c454d8b495f7bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022951 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 15492c9b 2024-11-15T15:59:54 Vulkan: A few workarounds for older ARM drivers Bug: angleproject:379269831 Change-Id: I16d2eb6074bf595f19561316b2c6b7854119b4b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022180 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuly Novikov 33dc1606 2024-11-16T11:39:22 Skip end2end failures on S22 FramebufferFetchES31.DrawNonFetchDrawFetchInStorageBufferThenClear_ARM FramebufferFetchES31.DrawNonFetchDrawFetchInStorageBufferThenClear_Coherent FramebufferFetchES31.MultiSampled Bug: angleproject:377923479 Change-Id: I85d781cff5f87dc2d6bdacce5759bcc93c8cd702 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6025225 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>