src


Log

Author Commit Date CI Message
Shahbaz Youssefi 35f4ff2f 2023-11-13T09:50:08 Test suppressions Bug: angleproject:8409 Bug: angleproject:8410 Change-Id: I9fb41292382563f7b9cc802167bf48432a46f55d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5023829 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 108bd958 2023-11-10T17:30:43 Tests: Add Slay the Spire trace Test: angle_trace_tests --gtest_filter="*slay_the_spire*" Bug: b/310281616 Change-Id: I6c94b0e3c72be1ad3cb2897981febd3f67722a20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5021241 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Alexey Knyazev 90278ecf 2023-11-09T00:00:00 GL: Support polygon mode extensions on OpenGL ES Expose NV_polygon_mode and ANGLE_polygon_mode when the native OpenGL ES driver supports the required functionality. Bug: angleproject:1791 Bug: angleproject:8132 Change-Id: I6a273640b5ef38e79e5d11f313cb90a9c79d0485 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5023849 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi ade3dacd 2023-11-06T21:56:41 Do compile/link unlocked if not threaded (but thread-safe) If GL_KHR_parallel_shader_compile is not supported, or it is not used to do threaded compilation and link, this change lets the compile and link jobs be done after releasing the share group lock. With multithreaded/multi-context applications, this allows the other context (typically the main context) to make progress in the meantime. A typical scenario where this optimization matters is games seamlessly loading a new area of the game and performing compilation and link in a separate context. Before this change, the game would stutter as the compile/link jobs prevent the main thread from drawing anything. With this change, the hitching is removed. Bug: angleproject:8297 Change-Id: I702d84324a7442561b49677bf42c16d650304313 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006640 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 93b97a59 2023-11-03T22:07:23 Make link job directly wait on compile job Previously, program link waited on the compile job on the calling thread before launching the link job. As a result, sequences of intermixed compile and link would get largely serialized as such: Main Thread Thread 1 Thread 2 Thread 3 Thread 4 Compile -------> Compile Compile -----------|----------> Compile Link | | Wait | | | | | |<--------------/--------------/ \------------------------------------------> Link Compile -------> Compile | Compile -----------|----------> Compile | Link | | | Wait | | | | | | | |<--------------/--------------/ | \---------------------------------------------|-----------> Link Compile -------> Compile | | Compile -----------|----------> Compile | | Link | | | | Wait | | | | | | | | | ... With this change, the main thread no longer waits for compilation to finish. It's the link job itself that does the waiting. This allows the main thread to go through Compile and Link commands without blocking, generating as many jobs as needed. The above scenario therefore becomes: Main T1 T2 T3 T4 T5 T6 T7 T8 T9 C ----> C C ------|----> C L ------|------|----> L C ------|------|-------W---> C C ------|------|-------|-----|----> C L ------|------|-------|-----|------|----> L C ------|------|-------|-----|------|-------W---> C C ------|------|-------|-----|------|-------|-----|----> C L ------|------|-------|-----|------|-------|-----|------|----> L . \-----\------>/ | | | | | W . | \-----\------>/ | | | . | | \-----\------>/ . | | | . | | | This greatly improves the amount of parallelism compile and link jobs get. The careful observer may note that the link job being blocked on the compile job is now wasting a thread from the thread pool. While this change is strictly an improvement, parallelism can be further improved if the link job is just not assigned to a thread until the corresponding compile jobs are finished. This is currently not possible, but may be if: - Instead of a thread pool, the operating system's FIFO scheduler is used. Then the operating system would automatically put blocking tasks to sleep and pick up another task. This has the downside of requiring threads to be created for each task. - The thread pool work scheduler is enhanced to be made aware of relationship between tasks and avoid scheduling jobs whose dependencies are not yet met. Alternatively, the number of threads in the pool can be increased by 30% and hope for the best. Bug: angleproject:8297 Change-Id: If4e6540ade47558a10cfab55e2286f073b904928 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006874 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi aec4ffac 2023-11-06T14:13:06 Add a perf test for parallel compile and link Bug: angleproject:8297 Change-Id: I40ec3af49bd0f5effbafc82b557840c615fd4c64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008040 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3a6b385f 2023-11-09T15:48:48 Vulkan: Fix depth/stencil texture copy Bug: angleproject:7289 Change-Id: Icde8a26e855e95a6c0a1e506d2435e981adc6f28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018798 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d896fab8 2023-11-09T15:03:05 Vulkan: Fix texture self-copy A new layout is introduced to support self-copy. Bug: angleproject:7289 Change-Id: Ib914c433d55b9a79cfeb7a91f8a2b8680824d473 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018797 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang e56cde03 2023-11-06T11:50:38 GL: Reset mLocalDirtyCurrentValues after syncronizing StateManagerGL::setAttributeCurrentData sets the bits in mLocalDirtyCurrentValues, leaving them set after syncState. All current values would be re-synchronized every time any the DIRTY_BIT_CURRENT_VALUES bit was set. Bug: chromium:1496378 Change-Id: I93b78c8f2d576f5583ac629660f189c268a154d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008036 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4c500944 2023-11-08T16:16:23 Translator: Mark most builtins as not having side effect This helps the translator eliminate stray uses of these builtins. Bug: angleproject:6061 Change-Id: Ic0e72bddad5730fb1f906a4c8e53191ab3318d29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5012988 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 6eeb11bd 2023-11-08T15:54:13 Translator: Unmark dFdx, dFdx and fwidth as having side effect These were marked as having a side effect in https://chromium-review.googlesource.com/c/angle/angle/+/924155, but it's unknown why. This change separately unmarks them as having a side effect, so if they are there to prevent a driver bug or such things, it can be isolated to this change. Bug: angleproject:6061 Change-Id: I8694ffdbb0142d330c8e2d73562f8004158023b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5012986 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill aea43399 2022-08-29T10:44:41 Mark texture2D() functions as not having side effects. This should allow the shader translator to remove unused variables and cut out sampling instructions in apps like T-Rex. Bug: angleproject:6061 Change-Id: If543c9c737cdbcfdea1433876cd425e7335e5297 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3862383 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 2155534b 2023-11-06T11:49:20 Don't set dirty bits for attribs that are out of range. PrivateState::setAllDirtyBits sets all bits in mDirtyCurrentValues. When the context has fewer max attibutes than MAX_VERTEX_ATTRIBS, this can cause out-of-bounds access to PrivateState::mVertexAttribCurrentValues if the dirty bits are iterated over without range validation. Bug: chromium:1496378 Change-Id: I65481c432263a6e353a9361bba741b97dc5e20b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008034 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Takuto Ikuta 1bb2c5ec 2023-11-07T15:44:41 support reclient in capture_replay_tests This also uses autoninja to start and stop reclient automatically. This will be used with https://crrev.com/c/4797373. Bug: angleproject:8309 Change-Id: I2e17c87c8ff0e253f16201297ef979337bf30292 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4796170 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Takuto Ikuta <tikuta@chromium.org>
Shahbaz Youssefi cea3775c 2023-11-02T15:41:06 Vulkan: Suppress VU Undefined-Value-ShaderOutputNotConsumed Bug: angleproject:8401 Change-Id: I3b561ec98090cf1c0050f113db96ea0c6c79d785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002728 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 9a7e8b7b 2023-11-07T17:02:02 Perf tests: log hwmon temps on linux Syslog on a failed bot indicates possible overheating. Log all hwmon temps which include CPU temps but also some other system temps (disk probably not included). We might need to self-throttle if crashes are correlated with higher temps. Bug: b/296921272 Change-Id: I25f8dd899dd25880fc1567ecc18e102759fb868f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008089 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a494c1d6 2023-11-07T16:29:07 GL: Fix compilation on drivers sensitive to initial comment Prior to https://chromium-review.googlesource.com/c/angle/angle/+/4994655, debug info was **prepended** to the translated source in the form of a comment after the compilation was done. In that change, this was done after translation and before the translated source was handed to the backend compiler. Some GL drivers however failed to compile the shader after this change because the #version line was no longer the first one in the shader. This is fixed by **appending** the debug info instead. Bug: angleproject:8297 Change-Id: I88b31fa128de304dc8bf32289bf20a29169883a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5007223 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 12cc04d0 2023-11-07T10:26:18 Vulkan: Workaround camera AHB's layerCount being random value We are seeing AHB used by google's camera app has random value in the layerCount. In my reproduced case, it is 0, which translates to layerCount in the VkImage. Sometimes I am also seeing a huge number in the layerCount as well. This causes problem in ARM driver that end up with assertion and other problems that end up with crash later. We need to root cause the underlying bug which is tracked by b/239181279. But before we have an actual fix in AHB creation code, this CL forces com.google.android.GoogleCamera AHB's layerCount to be 1 as a temporary app specific bug workaround so that we can move forward to get camera app up running with ANGLE. Bug: b/309480316 Bug: b/239181279 Change-Id: I219f6f89863a2cb8dee6c5efb0812389272373ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5010082 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Le Hoang Quyen 383df961 2023-11-06T22:00:52 Metal: only convert vertex if offset is not multiple of 4. Previously we always convert vertex attribute if its binding offset is not multiple of the attribute's size. This requirement seems to be unnecessary. This CL removes that requirement so the only requirement left for offset is that it must be multiple of 4. Bug: chromium:1496807 Change-Id: I35c421951c7817b77bd0c006ed4b72cd04b5a8d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006359 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Alexey Knyazev 7b62e4f5 2023-11-06T00:00:00 D3D11: Avoid GLenum conversions in GetBlendStateKey Bug: b/300968773 Change-Id: Ia41f77e686e0f1afc91381e29334f73859868129 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5009815 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 0584ffd8 2023-11-06T16:34:13 Unsuppress VUID-VkGraphicsPipelineCreateInfo-pStages-00739 Possibly was due to a VVL bug https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/6717 Bug: b/303219657 Change-Id: Ic9a6e7b45fb42572af04f94382906cd6f0f512df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008042 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi c114fc26 2023-08-28T15:40:26 Reland: Verify shader link correctness after looking up in program cache Since the program cache takes shader sources into account, if the cache is hit the shaders should have been correct for link. Bug: angleproject:8297 Change-Id: Iccadc63a976689d7fa06d0a5ccfe81a594c424e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5003236 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5a71be90 2023-11-03T15:07:06 D3D: Make non-constant loop indexing limitation a feature flag ... instead of exposing it as a front-end limitation only to set a shader flag in the front-end. Bug: angleproject:1130 Change-Id: Idbd9a1b7b79d231bd9fc1c0061c768df4aaab92d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5004847 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 2a433353 2023-11-02T14:29:19 Skip unnecessary default blend equation validation Skip the bitset loop when all equations are the default 0 Together with crrev.com/c/5008031, 2~2.5% improvement in overall instruction count (cpu cycles also improved but a bit less) in driver_overhead_2, which doesn't set equations. If not skipped, to/from GLenum conversion added ~1% (the trace has ~10k glDraw calls per frame so this is a hot path) (tested on Android with angle_enable_share_context_lock=false) Bug: b/300968773 Change-Id: Ic03ab36f071e36cecc78f4c107e3e82a08390e11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002007 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi e7ce481f 2023-11-01T22:44:22 Consolidate parallel compilation in front-end This cleans up the multiple compilation task implementations in the backends and consolidates them in the front-end. The front-end is then able to do the compilation in an unlocked tail call instead if desired (in a future change). This change is in preparation for having the program link tasks directly wait on the shader compilation tasks. As a result, the "shader resolve" should not be needed to access the shader compilation results; it should be enough to wait for the compilation job. This change therefore moves post-processing of results to the compilation job itself as they did not need to actually be done after compilation is done (merely after translation is done). As a side effect, shader substition and other debug features should now work for the GL backend as they are now done before back-end compilation. Bug: angleproject:8297 Change-Id: Ib9274b1149fadca7545956a864d6635b6cba5c3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994655 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 32f209b8 2023-11-03T09:57:00 Vulkan: Fix __samplerExternal2DY2YEXTtnd combined with swizzle Pixel camera app is hitting assertion due to swizzle applied to swizzle. This CL adds ReswizzleYUVOpsTraverser::visitSwizzle() method and detects there is a swizzle on YUV sampler and apply YUV swizzle first and then original swizzle and then fold two swizzle into one. This CL added a test to reproduce the bug. This CL also makes ShCompileOptions in ShaderExtensionTest class a class member instead of local variable so that subclass can modify for testing or debugging purpose. Bug: b/309480316 Change-Id: I72353fbad8dcacd77ca17a9f44e84485f4656a34 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5001614 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 8b4901d0 2023-11-06T10:43:14 Avoid GLenum conversion in BlendStateExt blend and equation The following functions now return value as is without ToGLenum conversion (that is often unnecessary): getEquationColorIndexed getEquationAlphaIndexed getSrcColorIndexed getDstColorIndexed getSrcAlphaIndexed getDstAlphaIndexed (at least) getEquationColorIndexed is on the hot path with noticeable performance impact; this CL also moves the implementation to the header to allow inlining. Bug: b/300968773 Change-Id: Ie223abe14b12afd7844686863ee5806945d10e45 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008031 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi ad4617f5 2023-11-03T22:46:41 Metal: Fix cross-compile build When cross-compiling for mac, prebuilt shaders are disabled as the Chromium Mac SDK does not include the necessary files. Bug: chromium:1385510 Change-Id: Ie13903681ece68e10f3b9fda42fcc6a8324d563e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5001921 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Dan Glastonbury 34e5620b 2023-11-01T17:52:34 Metal: Reuse UBO conversion buffer only if size matches BufferMtl::getUniformConversionBuffer will recycle an existing buffer if the request has the same buffer index and offset that is a multiple of existing block size. This disregards the GL std size of the request leading to incorrect allocation of blocks in the conversion buffer. The fix is to create a new conversion buffer when stdSize != buffer.uniformBufferBlockSize. Bug: angleproject:8393 Change-Id: Ife87309e66f65baa7f636b734a5586d0ae3b9768 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995450 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Shahbaz Youssefi ae3af8ee 2023-11-03T16:20:12 Manual roll VK-GL-CTS from 7d738783bf28 to b127977ddad4 (29 revisions) https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/7d738783bf28..b127977ddad4 2023-11-03 gleese@broadcom.com Simplifications for float_controls tests 2023-11-03 javed@igalia.com Add tests for verifying VK_FORMAT_UNDEFINED as input format. 2023-11-03 rgarcia@igalia.com Remove ESO tests which do not actually use ESO 2023-11-03 rgarcia@igalia.com Add missing mandatory features #ifdef 2023-11-03 tzlatinski@nvidia.com Fix the verification of multi-layered decode images 2023-11-03 gleese@broadcom.com Remove unused code from integer function tests 2023-11-03 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.7 into vk-gl-cts/main 2023-10-30 lorenzo@khronosgroup.org Update external dependencies to the latest version 2023-10-27 lorenzo@khronosgroup.org Merge remote-tracking branch 'vk-gl-cts/dev/VK_EXT_nested_command_buffer' 2023-10-27 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-10-27 rgarcia@igalia.com Fix warning when building deqp-vksc 2023-10-26 gleese@broadcom.com Fix offsets in float controls tests 2023-10-26 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.7 into vk-gl-cts/main 2023-10-20 Tyler.Schneider@amd.com Ray Query multiple queries tests cases: dEQP-VK.ray_query.multiple_ray_queries.* 2023-10-20 rgarcia@igalia.com Test multiple geometry query stats simultaneously 2023-10-20 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.7 into vk-gl-cts/main 2023-10-20 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.7 into vk-gl-cts/main 2023-10-19 mateusz.bahyrycz@mobica.com Tests for depth stencil buffer resolve 2023-10-19 gleese@broadcom.com Add coverage of compute workgroup sizing 2023-10-19 gleese@broadcom.com Simplifying changes to spirv_assembly test structure 2023-10-19 rgarcia@igalia.com Remove redundant ESO and feedback loop layout tests 2023-10-19 mateusz.bahyrycz@mobica.com Tests for sparse resources on transfer queue 2023-10-19 amber@igalia.com Add tests for inherithed framebuffers with VK_EXT_depth_bias_control. 2023-10-19 cturner@igalia.com Remove the custom device code in the copies and blitting tests 2023-10-19 piotr.byszewski@mobica.com Improve compile times of some generated glsl tests 2023-10-19 gleese@broadcom.com Simplify BorderSwizzle TestNode 2023-10-18 ziga@lunarg.com Fix duplicated files in cmakelists.txt 2023-10-18 cturner@igalia.com Fix an unused variable warning in release mode 2023-10-16 lorenzo@khronosgroup.org Merge "Merge branch 'dev/VK_ANDROID_external_format_resolve'" into 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,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: angleproject:8402 Change-Id: I99ac9c068080abf59f31e0f391da85cc0eb130b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002011 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 146a01ea 2023-11-03T15:49:30 Vulkan: Do not pad pipelineCacheData with zeroes Instead of padding, reduce buffer size to the one returned from `pipelineCacheData`. Padding `pipelineCacheData` with zeroes in cases when `vkGetPipelineCacheData()` returns less data then requested, may invalidate the entire buffer. Next time padded buffer is used in `vkCreatePipelineCache()` call, it may be rejected as invalid. I have checked the above by deliberately increasing `pipelineCacheSize` by 42 before `vkGetPipelineCacheData()`. After zeroing these 42 bytes, I passed padded buffer to the `vkCreatePipelineCache()`. Result was successful, however resulting cache size was always 52 bytes instead of the expected `pipelineCacheSize`. Bug: angleproject:2516 Change-Id: Ia1668ca96fc54e9b818ba0c8441e27c9dc2aedc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002451 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Geoff Lang f441e3ee 2023-11-01T15:22:55 Metal: Fix missing mix(float,float,bool) overload ANGLE has an ANGLE_mix_bool overload when the last parameter is a bool but it is not needed when the other parameters are scalar. Bug: chromium:1493243 Change-Id: I6ea904ed63055b49cf3eaded475eafa607ca5976 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995278 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen bfc764c5 2023-11-03T03:16:40 Metal: Optimize vertex conversion using compute shader. When converting vertex data with compute shader, getComputeCommandEncoderWithoutEndingRenderEncoder() should be used instead of getComputeCommandEncoder(). Because vertex data doesn't depend on previous render commands, hence ending the current render command encoder is unnecessary. The only render command that could write vertex data is the one with transform feedback (XFB). However, the XFB written data should already be synchronized by glEndTransformFeedback() priorly if any. Using getComputeCommandEncoderWithoutEndingRenderEncoder() ensures that the conversion will happen in a compute pass before any draw calls in the render pass. Bug: chromium:1496807 Change-Id: I4613902b2ae83814e7cda712de89c7d8f285e5d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5004821 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Igor Nazarov 0a8a7c2b 2023-11-02T13:52:03 Vulkan: Remove rx::WaitableCompressEvent class The `WaitableCompressEvent` class is a left over from the old code and currently serves no purpose. Change that made class obsolete: Vulkan: Sync pipeline cache only when truly changed https://chromium-review.googlesource.com/c/angle/angle/+/3668835 Removal of `WaitableCompressEventImpl` fixes problem, that `CompressAndStorePipelineCacheTask::mCacheData` was not destroyed until next time we assign the `mCompressEvent`. So basically, most of the time we had `mCacheData` allocation wasting memory. After this change, `mCacheData` will be deallocated as soon as the task finishes. Deallocation will happen in the async thread, saving some CPU cycles on the main thread. Bug: angleproject:4722 Change-Id: I9e8826e10535d7f6d844a0043704bd35838a0e02 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5001430 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Geoff Lang 59f7467a 2023-11-01T14:53:42 Metal: Add missing ScalarMatrix ops Translations for the following built-ins were missing: scalar - matrix scalar + matrix scalar / matrix Bug: angleproject:7525 Change-Id: I5da85781829c195906cc689ffee55cb681f0337c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995668 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen 9f9c35f3 2023-11-02T19:56:32 Metal: Don't map index buffer in drawArraysProvokingVertexImpl We don't need to map the provoking vertex's index buffer right after generating it on GPU. It caused GPU-CPU sync between every drawArrays call having flat shading. The only reason for mapping was to pass the indices data to setupDraw. However setupDraw only needs indices data for converting vertex attributes. Even then the converted attributes have the same order as the original vertices. Hence the conversion sill works fine with the original indices and there is no need for it to know about the generated indices. Bug: chromium:1496807 Change-Id: Ie69b3db78ead2160fd714ca04480625dded09062 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5000085 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Hailin Zhang 67222ef4 2023-10-20T22:56:09 Reland "Vulkan: merge client buffer data." This is a reland of commit 563569acfcaf56ea87916d2ab5d50f09c8e0094e Original change's description: > Vulkan: merge client buffer data. > > some old fashion game still use lots of interleaved > client buffer. instead of copy each attrib alone. > this cl try to merge all the attrib ranges. reduce > allocated memory and do whole range memcpy. > > Bug: b/306763053 > Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 > Commit-Queue: Hailin Zhang <hailinzhang@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: b/306763053 Change-Id: If079ab055b7b7a2d14235bee3311fd628f657f35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4997325 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Mike Schuchardt 221117ab 2023-11-02T08:48:51 Tests: Add The Sims Mobile trace Test: angle_trace_tests --gtest_filter=TraceTest.the_sims_mobile Bug: b/308927628 Change-Id: I5de44b7eedb904c318168fbc7e308af218dc5ab1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002145 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt 4cc9e0af 2023-10-31T11:19:51 Capture Tests: Fix unintentional gen-on-bind usage A handful of tests are binding handles without glGen'ing them first. This causes mismatched handles in capture_replay_test.py now that replay inserts additional gen calls for resources that aren't explicitly gen'd. For handles that are intentionally gen-on-bind, clean up the GL state so it doesn't miscompare. Test: capture_replay_tests.py --gtest_filter=*/ES3_Vulkan_SwiftShader Bug: b/303100333 Change-Id: I5ce8060ff62264b3d648722b3c4542a136d95db5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994414 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 053aa915 2023-11-01T12:01:27 Vulkan: Disable VK_EXT_graphics_pipeline_library on RADV Causes crashes in the driver. Bug: chromium:1494778 Bug: chromium:1497512 Change-Id: I0a9a74d8d77c48744ce9a62d27f48120209d1476 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995274 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov 918028a2 2023-10-31T17:53:07 Update bot detection in capture_replay_tests Since GOMA is going away, check username instead. Bug: angleproject:6085, angleproject:8309 Change-Id: Ie4fa4ec7fad8b52450c1ef8be9e5099f30c8fc7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994667 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 9a5d75de 2023-10-30T11:59:19 Vulkan: Fix incompatible redefinition of cube faces The TextureVk::mRedefinedLevels bitmask tracked which levels are incompatibly redefined, greatly reducing the complexity of dealing with GL's mutable textures. It did not however take into account the fact that GL allows each cubemap face to be separately redefined (unlike 2D arrays, where all layers are defined together). This change turns the bitmask into an array of bitmasks. Previously, a single bit represented whether the level is incompatibly redefined. Now, elements of the array track the same information for each cube face. For non-cube-map textures, only element 0 is used. Bug: chromium:1494664 Change-Id: I69568d3da2391796bf5f01505861fee42c6c8924 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4986289 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Peiyong Lin 46817856 2023-11-01T04:38:40 Revert "Vulkan: merge client buffer data." This reverts commit 563569acfcaf56ea87916d2ab5d50f09c8e0094e. Reason for revert: Broke Android build, see aosp/2812590 Original change's description: > Vulkan: merge client buffer data. > > some old fashion game still use lots of interleaved > client buffer. instead of copy each attrib alone. > this cl try to merge all the attrib ranges. reduce > allocated memory and do whole range memcpy. > > Bug: b/306763053 > Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 > Commit-Queue: Hailin Zhang <hailinzhang@google.com> > Reviewed-by: Charlie Lao <cclao@google.com> Bug: b/306763053 Change-Id: I31ab923af16bf3f9e99033ebd6ea4c5e5b310d71 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995494 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Peiyong Lin <lpy@google.com> Auto-Submit: Peiyong Lin <lpy@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Hailin Zhang 563569ac 2023-10-20T22:56:09 Vulkan: merge client buffer data. some old fashion game still use lots of interleaved client buffer. instead of copy each attrib alone. this cl try to merge all the attrib ranges. reduce allocated memory and do whole range memcpy. Bug: b/306763053 Change-Id: I493d7f0e1ef593fb7059c36ae0ed2149c4595e42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960642 Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Chris Forbes c0c20673 2023-10-31T09:03:16 Remove expections for some AHB tests which are now fixed Bug: b/223456677 Change-Id: Ibdc5b529e249c39c241a8e8e2b78ac10ff3d5ad2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4988292 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev b6607672 2023-10-30T00:00:00 Test sampling from a texture with renderable levels below base Bug: angleproject:8378 Change-Id: Id847849e1920c0d1706a4b3441c907ea2451cb6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994791 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 36f41997 2023-10-30T15:14:09 D3D11: CopySubTexture: Handle sRGB source with D3D11 Use typeless formats for sRGB textures that can be reinterpreted as linear. Add a parameter to SRV creation to request samplers that do not do sRGB for copying sRGB textures. Bug: angleproject:7907 Change-Id: I3d94dfa5b25a1c2c531cd9bef4247097aa4bfb61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4986290 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Hailin Zhang 2ee06400 2023-10-31T10:57:02 Vulkan: fix dynamic buffer alignment issue. Bug: b/306763053 Change-Id: I2f15fe2a2a36a9f55686987641e6afddb44ec9aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4994410 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Shahbaz Youssefi c6dc00d2 2023-10-31T11:50:40 Manual roll vulkan-deps from 69081d0e32f7 to e55b4f78bcf3 (110 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/69081d0e32f7..e55b4f78bcf3 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/7fa0731a80..f8dd5adde4 * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/2de1265fca..637cff3d05 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/73876defc8..4f014aff9c * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/f4bfcd8852..aff5071d4e * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/131a081e08..1ddcde3c55 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/f7017f2333..116b6b1513 * vulkan-utility-libraries: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries.git/+log/dcfce25b43..5b3147a535 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/cc1e12c6fc..c27900222c 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 Change-Id: I0c94d5f8e6d5b4c42186c063052f824c5cb5a3df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4995264 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 118a9b14 2023-10-30T00:00:00 Test sampling from a texture with extra renderable levels Bug: angleproject:8378 Change-Id: I4790d59ce193a2aa4ba9e468debf0933a6e3fe47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4987639 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao c0f94afb 2023-10-30T11:07:02 Vulkan: Limit ImageTestES3.RGBXAHBImportMultipleLayers to 1 layer ImageTestES3.RGBXAHBImportMultipleLayers is testing 3 layer AHB with CPU write. It assumes alignment between each layer is 4096 which appears not always true in ARM driver. I am also not seeing any API that would tell us the underlying layer alignment. So for now restrict this test to single layer. Bug: b/223456677 Change-Id: I447990d08d31c2a20e8765686834f43b81560840 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4990044 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 471b5040 2023-10-26T09:33:29 Vulkan: Only enable DS dynamic state if there is DS attachment. This is discovered while investigating EXT_yuv_target crash in driver. What happens is that UtilsVk::copyImage does not set depth stencil dynamic state since there is no depth stencil attachment. But we enabled dynamic state for D/S, thus driver still does D/S state setup, which sees garbage data and hitting assertion. Even though this is discovered with EXT_yuv_target test, I believe this is a general issue. This CL adds the renderPassDesc.hasDepthAttachment() and hasStencilAttachment() check and enable depth or stencil related dynamic state only if there is depth or stencil attachment. This fixes crash in driver with ImageTestES3.ClearYUVAHB test. This also has added performance benefit that we now completely skips depth/stencil related dynamic state dirty bit handling code, thus reduces state processing CPU overhead. Bug: b/223456677 Change-Id: I3a4fe6d97b14c066d78f8b8ded21c626cb2f376c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4980765 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 5fa65ec8 2023-10-27T16:12:46 ImageTest: check support before test cubemap ImageTestES31.SourceAHBCubeArrayTargetCubeArray crahes because AHB creation failed. We should check kAHBUsageGPUCubeMap support and bail out if not supported. Bug: b/223456677 Change-Id: I0d66830ac892e673bc39cca8caf5e25822957775 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985412 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com>
Cody Northrop e519da9a 2023-10-29T14:33:06 Tests: Add Streets of Rage 4 trace Test: angle_trace_tests --gtest_filter="*streets_of_rage_4*" Bug: b/308334509 Change-Id: I3cc2d41c83bfcc6a32e6d1aec5e306cefb15afdc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4988132 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mike Schuchardt <mikes@lunarg.com>
Charlie Lao bcd331f1 2023-10-27T15:21:35 ImageTest: Allow writeAHBData to fail ImageTest::SourceNativeClientBufferTargetRenderbuffer test is using EGL to create a AHB. eglCreateNativeClientBufferANDROID does not allow us to specify CPU access. So driver may allocate AHB in a way that prohibits CPU access. That will cause AHB lock to fail and writeAHBData crash. This is within AHB specification. This CL allows this to fail so that we wont crash. Bug: b/223456677 Change-Id: I549b940d1283165cec1dc48ea5b43ba917081252 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985627 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Mike Schuchardt 53c5b145 2023-10-10T09:42:08 Capture/Replay: Restore texture bindings on reset Store active texture unit and all bound textures at capture start. Track dirty state for each unit+target pair during capture. Restore bound textures for each dirty binding unit when resetting context state. Also restore active texture unit if necessary. Test: Capture The Sims Mobile Bug: angleproject:4599 Change-Id: Iae3e03e6c5b0a35d5bb95bf07397d7894355502b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4927869 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Charlie Lao acb0ae09 2023-10-27T13:38:09 Vulkan: Swizzle YUV output from GL component order to vulkan Since OpenGL and vulkan has different YUV component ordering, we need to swizzle the component form GL to vulkan when we write YUV data to output variable. The computation in shader will still carry out in OpenGL order. This CL swizzles component for the YUV output variable. Bug: b/223456677 Change-Id: Ie34bbc723bf3723ac65f7931aeab086c92610271 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985622 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 3b555e8d 2023-10-26T00:00:00 GL: Add emulateClipOrigin workaround Older Adreno drivers apply GL_CLIP_ORIGIN_EXT to the framebuffer instead of the clip space, thus causing various side-effects. Used a uniform to emulate the correct behavior. Drive-by: * Fixed a typo in ClipControlTest.OriginFrontFacing Fixed: angleproject:8392 Change-Id: I2f7145977ab0e11dc88e8dbfec2cd32c4c31f830 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4987326 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Tommy Nyquist 95fe7e47 2023-10-27T14:07:52 [Android] Update NDK version check for hardware buffer. The function used for checking if hardware buffer is supported requires NDK 29, but is currently checking if 26+ is in use. This was not an issue before, but when updating the minimum SDK (and NDK) version in Chromium, this led to an inconsistency. For now, increasing the version requirement to 29+, and therefore also removing the unnecessary branch for lock planes support. Bug: chromium:1497004 Change-Id: I3d6e60e51db0831ee81d817aec90760d7680cc31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4985624 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Roman Lavrov a7882c41 2023-10-27T09:32:07 Skip InstancingTestES3.LargeDivisor on Linux ASAN Tests a large divisor and hits an emulation path on SwiftShader, causing flaky timeouts on asan bots. Bug: angleproject:7900 Change-Id: Ia82941e67867816c8330472f4f2ea8d897fa9636 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4982910 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Alexey Knyazev 06819324 2023-10-12T00:00:00 Metal: Linearize PVRTC1 blocks for buffer uploads PVRTC1 blocks are stored in a reflected Morton order and need to be linearized for buffer uploads in Metal. Fixed: angleproject:8376 Change-Id: I59497aaf49eb57aa93e346d62d56c69535555fd9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973955 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Geoff Lang eca38a10 2023-10-26T11:02:38 Vulkan: Supress new DrawNone VVL errors Errors: VUID-vkCmdDraw-None-09000 VUID-vkCmdDrawIndexed-None-09002 Bug: angleproject:8394 Change-Id: If43390e837df088ba7a6d0c7eb5947927ad186d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4979786 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 3596ab4c 2023-10-26T10:11:17 Metal: Disable prebuilt shaders on iOS. Chromium's Mac SDK is missing files needed to build for iOS: LLVM ERROR: Error opening '/Volumes/Work/s/w/ir/cache/xcode_ios_15a507.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/bin/../lib/clang/32023.35/lib/darwin/libmetal_rt_ios.a': No such file or directory! Bug: chromium:1385510 Change-Id: Iee7d6f477ffbebbbdca22e8377f244d2d13dfe66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4980045 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Hailin Zhang 5dd0c842 2023-10-24T13:48:29 Vulkan: improve memory type mismatch issue. for dynamic buffer usage, the memoryTypeIndex returned from findMemoryTypeIndexForBufferInfo not used. if we add more flags like VK_MEMORY_PROPERTY_HOST_CACHED_BIT at alloction. the actual memory type allocated may not have such flag. Bug: b/306763053 Change-Id: I778e51fdd5ce0bc0810a965c45b5763a155fc391 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973574 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Mateusz Przybylski fdf4c6a6 2023-10-24T12:09:51 Add test for attrib rebinding from ARRAY_BUFFER to client. Failure was found in Dragonmania game, where on switching from ARRAY_BUFFER to client attrib pointer without updating the stride, ANGLE assumed no change in the pipeline. Bug: b/306472834 Change-Id: I30f7a478ed62f4356317156b50558166cb7c4c01 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4977168 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 43187a24 2023-10-25T09:43:56 Vulkan: remap YUV clearColor component from GL order to vulkan order For EXT_YUV_TARGET, OpenGL and vulkan uses difefrent mapping between YUV to RGB. OpenGL spec says "When clearing YUV Color Buffers, clear color should be defined in yuv color space and so floating point r, g, and b value will be mapped to corresponding y, u and v value and alpha channel will be ignored.", but vulkan spec says "Values in the G, B, and R channels of the color attachment will be written to the Y, CB, and CR channels of the external format image, respectively.". This CL adjusts clear color to remap the clear color from GL ordering to vulkan ordering. This CL also adds a temporary workaround for ARM driver bug where they were looking at unused color attachment instead of resolve attachment. Bug: b/223456677 Change-Id: I9800bffc18ccd9d77b4e86995161cdde06257e1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973355 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 4f611a1f 2023-10-24T20:56:19 Vulkan: Remove RendererVk::collectAllocationGarbage Instead of adding separate method overload `DestroyGarbage()` method. This will avoid checking `mUse` and creating garbage list twice. Bug: b/218891184 Change-Id: If56ffe72a639021b1fd37feb02ebb91f62ad0933 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4974318 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang 729e19ac 2023-10-24T15:31:17 Remove essl3 extension requirement for ES3 texture parameters The extensions are not clear about support for the swizzle parameters with external textures. Other parameters are mentioned with specific validation (which is handled in ValidateTexParameterBase). Simply let the other validation handle these parameters and allow the swizzle to be forwarded. Bug: chromium:1493448 Change-Id: Ic34d4c124c5493fef796322b5237541e557fd7ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4973157 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Geoff Lang a9b01747 2023-10-25T10:49:56 Metal: Add fall back to from-source shader compilation We can't compile Metal shaders at build time without the chromium build directory and mac_sdk.gni. Add a graceful fallback to building the shaders from source at runtime in this case. Also detect the iOS simulator in gn and disable shader compilation. We don't have all the Mac SDK files needed to build shaders for this target yet. Bug: chromium:1385510 Change-Id: Ibd1b36f9d97e7340a9742cba0c9c5f2221cd9a8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4974918 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Chris Forbes 9e5f5188 2023-10-24T18:43:12 Reswizzle results of YUV sampling operations Change-Id: Id6eee9e0d9e2b80d48c80f27bc8e670a5621d263 Test: ImageTestES3.* 24 -> 15 failures Bug: b/223456677 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4970337 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Roman Lavrov 13776ac3 2023-10-24T11:10:25 Compile with optimize_max instead of default_optimization Android builds default to aggressive optimization for size (-Oz) which results in subpar performance in some spots. AFAICT the effect of this change on cflags is: -Oz -enable-ml-inliner=release to -O2 Note that -enable-ml-inliner=release has a more significant impact on the binary size than -Oz/-O2: With it: -Oz 5.7M, -O2 6.15M Without it: -Oz: 6.3M, -O2 7.1M So this change goes 5.7M -> 7.1M (+1.4M). That's in standalone ANGLE builds. Unsure if Chrome builds might be different. Skipping a few dEQP tests where this switch seems to uncover UB. Bug: b/306391262 Bug: b/307584642 Change-Id: I44d0f3bcf25de0c36a4228895cad19ea38502cbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4968419 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Dan Glastonbury 562d4be3 2023-10-20T14:33:05 Clear pending program linking in Context::onDestroy When destroying Context, ANGLE resets any internal state before releasing allocated objects, such as Programs and Shaders. When destroying a program, any pending program linking is resolved via Program::resolveLink. This results in trying to access the Context state that’s just been reset. To work around this, we ensure there are no pending links before resetting the Context state. Bug: angleproject:8380 Change-Id: I599c7e5a82b0e6bf14df1263006e10d8a9cb0b38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4957715 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Geoff Lang db38707a 2023-10-19T18:08:51 Metal: Compile mtllib at build time. Reworks gen_mtl_internal_shaders.py to only generate the combined metal source file, mtl_internal_shaders_autogen.metal. metallibs are now compiled at build time using gn actions. This allows the Chrome and WebKit build process to use the same code for loading the builtin shaders even though they compile them in different ways. We now only build the mtllib for the OS we're currently building for. Bug: chromium:1385510 Change-Id: Ie3b4f66c48a7e0eccd5fe664f988e407f452795c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4583134 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Yuxin Hu c22f46b5 2023-10-23T11:52:20 Update rgb-565-no-depth-no-stencil test suite names Replace the "-" with "_" in the test suite names to be consistent with other test suite name formats. Bug: b/297901032 Change-Id: Idbfc1bc7aa7cef4382e3cdd3e223db28f414f15e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4968792 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Le Hoang Quyen 65f6c2ea 2023-10-22T18:07:55 Metal: always implicitly resolve MSAA render buffers on tiled GPUs. On tile based GPUs, implicitly resolving MSAA render buffers to single-sampled is preferred. Because it would save bandwidth by avoiding storing the MSAA textures to memory. Furthermore resolving as StoreAction is almost a free operation on these GPUs. Traditional desktop GPUs almost always store MSAA textures to memory anyway, so this feature would have no benefit besides adding additional resolve step as well as memory overhead of the hidden single-sampled textures. Bug: chromium:1486094 Change-Id: I5eb3b1314560024dd5c0834b0c0b43a6b4d3d51b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4962114 Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 4b59e4c6 2023-10-17T17:47:20 Add a test to check glReadPixels format and type In GLES 3.2 spec https://registry.khronos.org/OpenGL/specs/es/3.2/es_spec_3.2.pdf, section 16.1.2, it says the following glReadPixels type and format should work: The second is an implementation-chosen format from those defined in table 8.2... The values of format and type for this format may be determined by calling GetIntegerv with the symbolic constants IMPLEMENTATION_COLOR_READ_FORMAT and IMPLEMENTATION_COLOR_READ_TYPE, respectively. The implementation-chosen format may vary depending on the format of the selected read buffer of the currently bound read framebuffer. Add a test to check that when reading from the default framebuffer, using the format and type retrieved from IMPLEMENTATION_COLOR_READ_FORMAT and IMPLEMENTATION_COLOR_READ_TYPE works. Bug: b/306256081 Change-Id: I1e94087aac8c803bcc5db3515ed56291349daf28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4950844 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao e4a267e5 2023-10-20T16:10:50 Vulkan: Fix YUV external format resolve attachment load/storeOp When YUV external format resolve attachment is used, and nullColorAttachmentWithExternalFormatResolve is true, the loadOp and storeOp are packed in color attachments.When we setup the resolve attachment, we must use the color attachment information instead of general resolve code path (where there is always a color attachment). Without this fix, the resolve attachment is always uses loadOp=DontCare which is wrong. Bug: b/223456677 Change-Id: Ib41eb438aedbcd9a37c356540e81cdf7b9610a20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960502 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 9298baa9 2023-10-20T10:26:00 Vulkan: Fix ImageTestES3.RenderToYUVAHB assertion The bug here is that for YUV resolve, we always set mTransience to YuvResolveTransient. And isImageTransient() returns true if mTransience != Default. And if image is transient, we will do unresolve, which is incorrect here. For nullColorAttachmentWithExternalFormatResolve() case, the image is actually not transient. This CL will only set transience to YuvResolveTransient if we need to create a transient color attachment. This CL looks at mImage->getExternalFormat() as the answer for isYUVResolve instead of rely on transience. Bug: b/223456677 Change-Id: I1bc176df22b0abc91d668a178e48d6b90eacbdd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4959194 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Yuly Novikov 6188c0a6 2023-10-23T16:47:10 Unsuppress VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912 VUID removed in http://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/5941 Bug: chromium:1420265 Change-Id: I8e3b9462df5e250c97c6bff02635cd28fec2a4e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4967241 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Alexey Knyazev 6258acae 2023-10-19T00:00:00 GL: Add resyncDepthRangeOnClipControl workaround Some drivers do not apply GL_CLIP_ORIGIN_EXT and GL_CLIP_DEPTH_MODE_EXT state changes until other transformation states are updated. As a workaround, force-resync the depth range on clip control updates. Fixed: angleproject:8381 Change-Id: I26f95108e9419be30ea0b562e02ab4bae78f65bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4966525 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev ec29008a 2023-10-19T00:00:00 GL: Fix extended dirty bits sync * Use extendedBitMask when syncing extended dirty bits to skip bits ignored by the current operation. * Use extendedBitMask for unsetting backend-local extended dirty bits. Fixed: angleproject:8382 Change-Id: I0bda18d801805b30d7cb071366353af05a44ab57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4960055 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi ba65feb4 2023-10-18T17:33:38 Vulkan: Limit mutable texture flush to one update In case there are many updates for a mutable texture, flushing it preemptively can reduce performance, especially if it is done repeatedly. * Added getLevelUpdateCount() to ImageHelper. * Previous mutable textures will now be flushed only if they have exactly one update per mip level/cubemap face (if defined). * This means that mutable textures with no data will also not be flushed. * Added unit tests for single-level texture flushing and situations with no updates or more than one update. Bug: b/285613719 Change-Id: I1592ecf502051a55ebfbb7fcd22577c9ce87bf43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4953847 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 49fd8eda 2023-10-20T14:23:38 android_helper: improve _RemovePrefix logging Random stuff gets in there sometimes, such as: "cmd: Failure calling service package: Broken pipe (32)" RemovePrefix just raises that it doesn't start with "package:" so the issue doesn't show up in logs. Bug: b/296921272 Change-Id: Ifae4e3c0c7717514401bf1109febf8e70fff6527 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4959473 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Charlie Lao d2de7451 2023-10-19T14:10:44 Vulkan: Fix VK_android_external_format_resolve VVL error part 5 Fix assertion in RendererVk::getFormatFeatureBits(). When formatID is external format, we can not use vkGetPhysicalDeviceFormatProperties to get the formatFeature (since VkFormat is undefined). To fix this, we keep the formatFetaure that returned from AHB in the ExternalYuvFormatInfo and use that in getFormatFeatureBits() if it is external format. This also fixes the VVL error VUID-VkImageCreateInfo-pNext-02396: The Vulkan spec states: If the pNext chain includes a VkExternalFormatANDROID structure whose externalFormat member is not 0, flags must not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT Bug: b/223456677 Change-Id: I625c2bf4fe534fa206918b16772ac3ac7c6fa79a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4956117 Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 80e2d8d7 2023-10-19T13:53:32 Vulkan: Update PipelineProgram if mStreamingVertexAttribsMask dirty When mStreamingVertexAttribsMask bit chnages, we are going to switch between a internal buffer and user's buffer. We must update graphics pipeline program, even if bufferOnly is true. Bug: b/303219048 Change-Id: I0536cb7bcd6ed8f1de39aaea5bd6cd6eef61c5e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4957193 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 679fe65d 2023-10-19T13:59:52 Attempt to fix FixedQueue.ConcurrentPushPopWithResize flakiness If dequeueThread has finished while the enqueue thread is sleeping, queue might still be full once enqueueThread wakes up. In this case, push call will hit assertion since queue is full. This CL makes the enqueueThread bail out if dequeueThread already finished. Bug: chromium:1493831 Change-Id: I9e3ad957c5d2eb15c5b409bb818c03dc807f3518 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4957194 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao c153d4a5 2023-10-18T18:12:19 Set isYUV to true for "EXTERNAL" formats These external formats are all YUVs so far. It is more correct to set isYUV to true than set to false. Bug: b/223456677 Change-Id: Ib9eb937754f4c085fbcc6768bb7a93d3c28317c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4953919 Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 464dbb61 2023-10-18T17:49:14 Vulkan: Fix VK_android_external_format_resolve VVL error part 4 VUID-VkWriteDescriptorSet-descriptorType-01946: The Vulkan spec states: If descriptorType is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, then the imageView member of each pImageInfo element must have been created without a VkSamplerYcbcrConversionInfo structure in its pNext chain. The bug here is that right now these angle::Format::External{n} returns isYUV false. This CL changes the check of isYUV to getYcbcrConversionDesc().valid(). Bug: b/223456677 Change-Id: Ifc97f738972a24c4e5dec3e37d8d5896efa9fe80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4953917 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 4d7fc442 2023-10-18T12:49:06 Vulkan: Fix VK_android_external_format_resolve VVL error part 3 VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter: The Vulkan spec states: If attachmentCount is not 0, pAttachments must be a valid pointer to an array of attachmentCount valid VkImageView handles. The bug here is that when nullColorAttachmentWithExternalFormatResolve is true, there is no color attachment, but the RenderPassDesc still appears having a color attachment because we need to store the formatID in it. This CL changes to use mFramebuffer.getImageViews().size() instead of mRenderPassDesc.attachmentCount() which is more correct anyway. Bug: b/223456677 Change-Id: I0f0947f0c642bac9cd18a80525b92c62ef0723ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4952969 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Chris Forbes <chrisforbes@google.com>
Charlie Lao fce367c9 2023-10-18T11:36:59 Vulkan: Fix VK_android_external_format_resolve VVL error part 2 VUID-VkFramebufferCreateInfo-flags-03201 The Vulkan spec states: If flags includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, the usage member of any element of the pAttachmentImageInfos member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext chain that refers to an attachment used as a color attachment or resolve attachment by renderPass must include VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT. The bug here is that when we create VkImage for AHB for rendering, we specify mUsage as Sample. This CL adds COLOR_ATTACHMENT if it supports resolve. This CL also adds VkAndroidHardwareBufferFormatProperties2ANDROID format query for debug logging. VUID-VkImageViewCreateInfo-usage-08931 is temporary added to skip list due to ARM driver bug. The bufferFormatProperties returned does include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT. Will remove once driver is fixed. Bug: b/223456677 Change-Id: Ibccf5f19975654fd94b00ae10e15ac986f7866dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4952962 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Chris Forbes <chrisforbes@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 889b01ef 2023-10-17T12:13:10 Vulkan: Fix VK_android_external_format_resolve VVL error part 1 VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09337: The Vulkan spec states: If the nullColorAttachmentWithExternalFormatResolve property is VK_TRUE and pResolveAttachments is not NULL, for each resolve attachment that has a format of VK_FORMAT_UNDEFINED, the corresponding color attachment must have the value VK_ATTACHMENT_UNUSED VUID-VkFramebufferCreateInfo-attachmentCount-00876 The Vulkan spec states: attachmentCount must be equal to the attachment count specified in renderPass Fix assertion in FramebufferVk::getFramebuffer() Bug: b/223456677 Change-Id: I538a44753a2ba9b432fa3b1814748942cd8a3500 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4948652 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Solti 05c5cef0 2023-10-17T21:16:52 Manual roll vulkan-deps from 68a0a794aa0a to 92b29883afea (1 revision) Manual roll requested by solti@google.com https://chromium.googlesource.com/vulkan-deps.git/+log/68a0a794aa0a..92b29883afea Changed dependencies: * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/7ef2b9a6bb..deb215c083 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,solti@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: b/306178740 Tbr: solti@google.com Change-Id: I1060b8e021e28e70ca11305dc60a8fa8462e1eff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4950550 Commit-Queue: Solti Ho <solti@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 384a29a8 2023-07-27T10:51:07 Reland: GL: Remove EGL_EXTERNAL_CONTEXT_SAVE_STATE_ANGLE Now that Chromium no longer uses it. This is a reland of: https://chromium-review.googlesource.com/c/angle/angle/+/4724768 Bug: angleproject:5509 Change-Id: I650e598580539fbe404f2ec4b56b20b56b948f6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4903079 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu cfc40d2b 2023-07-19T17:47:13 Vulkan: Adjust clear color precision for GL_RGB5_A1 FBO When clear color has more precision than the framebuffer format can hold, dithering is automatically applied on some hardware. This issue causes below dEQP tests to fail when the FBO color attachment format is RGB5_A1: KHR-GLES31.core.draw_buffers_indexed.color_masks KHR-GLES32.core.draw_buffers_indexed.color_masks Adjust the clear color precision for RGB5_A1 format to workaround the issue. We can remove this workaround once the vulkan driver fixes the auto-dithering problem. Bug: b/292282210 Change-Id: Ic3ffebd2d20c8782612619a60d1ec2cc6d613c22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4937472 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Alexey Knyazev 36439d9c 2023-10-12T00:00:00 Metal: Fix PBO uploads of PVRTC1 textures Do not override row pitch values for PVRTC1 textures during internal backend operations. Instead, set bytesPerRow to 0 before calling replaceRegion just to pass Metal Validation. Enforce CPU path for PBO uploads until GPU block linearization is implemented. Bug: angleproject:8376 Change-Id: I80b9ec69364d55cd9f51005f4d1a180e05e71c2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4949350 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi cc61dded 2023-10-17T13:21:14 Vulkan: Remove fixed VU suppressions Bug: angleproject:2866 Bug: angleproject:4928 Bug: angleproject:5027 Bug: angleproject:7843 Bug: angleproject:8076 Bug: b/175584609 Change-Id: I1a3ccdc92be73874e7599961bae2a0e8c7497b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4947653 Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yiwei Zhang 0be59b3d 2023-10-17T17:31:05 Vulkan: disable warmUpPipelineCacheAtLink for Venus The same cache miss is seen on MESA ANV and MESA RADV drivers. Together with already disabled ARM drivers, we'd disable for Venus as a whole for monolithic pipelines. This won't affect later Venus GPL enablement on supported host drivers like ANV and RADV. Bug: b/299532942 Test: affected title is semi-playable Change-Id: Iaec0d43b15b64b6b74dfa68021f8a5f2fe6cca8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4948694 Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Gyuyoung Kim 3b28bca0 2023-10-11T09:49:54 Allow using RGBA IOSurfaces with GL_RGBA format for EAGL backend As https://crrev.com/c/4877334 switched RGBA IOSurfaces to GL_RGBA to work with ANGLE/Metal, some tests(e.g. web tests) on iOS failed to create an IOSurface because ANGLE'S EGL backend still still binds IOSurfaces as GL_BGRA_EXT even though we expect the IOSurface to really be RGBA. To fix it, this CL allows using RGBA IOSurfaces with GL_RGBA format by adding a GL_RGBA entry to kIOSurfaceFormats. See also the comment[1] for better explanation. [1] https://crrev.com/c/4918590/comments/1e44e971_50c3d780 Bug: chromium:1489586 Change-Id: Ifa215318401edb892fd5527c35c7d30871e82a83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4930309 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e076d6cf 2023-10-17T11:39:10 Move invalid uniform protection to the frontend. The frontend potentialy indexes into mUniformLocations with invalid uniform locations while validation is disabled too. Move the validation from the Metal backend to the frontend. Bug: chromium:1484878 Change-Id: I92bc43aa28cfa26d601bb28f318860375f618608 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4947652 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 2e11fcc5 2023-10-16T16:40:35 Vulkan: Fix assertion when YUV image attached to resolve attachment When YUV image attached to resolve attachment, mSamples is 1. Righ now the code assumes resolve is a MSRT attachment, so it asserts mSamples>1. This CL adds a new API packYUVResolveAttachment so that we can assert properly for YUV and MSRT. Bug: b/223456677 Change-Id: Ib65fd3fe1e6561b85395cc27204bbd85c1f464c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4942907 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>