src


Log

Author Commit Date CI Message
Shahbaz Youssefi ccf8530b 2023-06-27T16:01:58 Split context state by locality of get/set effect Some state are purely local to the context when get or set. For example, the state of depth test does not affect and is not affected by any other state. Some state on the other hand may affect other contexts. In particular, some objects are shared between contexts of a share group, and may affect each other through the observer interface. These sets of state are separated to create a clear boundary between state that can and cannot be accessed without holding the share group lock. A follow up change removes locking from the entry points that purely access the former set of states. For the latter state, it is likely possible to access most if not all of them without holding a lock, but careful inspection is required before that can be considered. In particular, most entry points that simply bind an object are likely harmless if the ref counter is turned atomic. Bug: angleproject:8224 Change-Id: I91c3fa9de870c13d48012a5e06c177dab4010907 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4651375 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 5f581f87 2023-06-27T20:38:03 Pass dirty bits by value Split CL from follow up change where the dirty bits need to be passed by value as they are calculated from two sets. Many cached dirty bits are turned to constexpr as a result. Bug: angleproject:8224 Change-Id: Ibdb3090d6ee93788e1502b72bce55f4677937c58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4650074 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Alexey Knyazev 0e7c79e3 2023-06-29T00:00:00 Vulkan: Fix resolve with multiple targets of different formats Ensure that the appropriate code path is taken when resolving into multiple target buffers of different formats. Bug: chromium:1123524 Change-Id: Ic25a52ba069a2209c907226613fde1109823c094 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4650561 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop 77c4b677 2023-06-28T08:23:23 Vulkan: Suppress PointSize VVL error Bug: angleproject:8237 Bug: angleproject:2796 Bug: b/288961771 Change-Id: I7e4b364225c61fd72091e9d84d45eb71a02a5597 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4653398 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com>
L. E. Segovia ed391dae 2022-03-25T16:36:39 Replace `extern thread_local` to avoid GCC < 9.1 bug GCC generates broken code for mingw-w64 target when accessing `extern thread_local` variables from another compilation unit. See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104862 See: https://invent.kde.org/graphics/krita/-/blob/master/3rdparty/ext_googleangle/02-patches_krita/0017-Replace-extern-thread_local-to-avoid-GCC-mingw-w64-b.patch Co-authored-by: Alvin Wong <alvinhochun@gmail.com> Bug: None Change-Id: Ief0036054e644d40b8b0e86ed990280e566da2a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4637587 Auto-Submit: L. E. Segovia <amy@amyspark.me> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan f150cf10 2023-06-23T02:56:09 Vulkan: minor pipeline cache chunk key hash bugfix The hash key was not correctly streaming the chunk index into the key string -- "chunkIndex" here is a uint8_t, which the ostream incorrectly identified as a character rather than byte. So the "std::hex" modifier didn't have any effect and chunkIndex 0 had a truncated key. Bug: angleproject:8231 Change-Id: Icb4977b658214979e08f66fcb98217259d4799ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639493 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 113f847b 2023-06-26T12:07:52 centralize basic OS/platform detection functions We had multiple different places that defined these, and with varying naming schemes. Centralize them to be defined in platform_helpers.h. Also renaming the IsApple(uint32_t) functions to IsAppleGPU(uint32_t) to avoid ambiguous meaning: "IsApple" should mean "is Apple-vended OS" while "IsAppleGPU" should mean "is Apple GPU vendor ID". Bug: angleproject:8229 Change-Id: If4e3fc5ac1b5b8ad416663950a1b2ee912ccad99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4647291 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Steven Noonan <steven@uplinklabs.net> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi b1b12d4a 2023-06-22T15:27:48 Vulkan: Move device OOM tests to new test suite * Moved the device OOM tests from VulkanImageTest to a new test suite, VulkanMemoryTest. * It is instantiated for ES3. * Moved the slow tests in the expectation file to the end. Bug: b/280304441 Change-Id: Icc958b5eb071567f8e6671661302760c7f5e3621 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639041 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Igor Nazarov 9faf7059 2023-06-20T19:04:49 Optimize angle::Spinlock performance This optimization is a preparation for future commits. Performance was tested by defining `ContextMutexType = angle::Spinlock` to use `SharedContextMutex<angle::Spinlock>` as `mSharedContextMutex`. Test result is average time for 1000'000 `glGetError()` calls on S906B with locked CPU frequencies: SharedContextMutex<angle::Spinlock> Before the optimization: 14.289 ms After the optimization: 12.941 ms (-9.4%) Performance when not using `angle::Spinlock` (current code): SingleContextMutex: 9.115 ms (-36.2%) SharedContextMutex<std::mutex>: 29.186 ms (+204.3%) Bug: angleproject:8226 Change-Id: I447ff807cd6b72ff3fc115e73736fe63eb642785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632728 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 5f6d7848 2023-06-15T12:31:26 Android: Add/update MaliG710 expectations and tests Fixed End2End tests causing valiadation errors where VK_EXT_primitives_generated_query was being enabled without enabling VK_EXT_transform_feedback. Consolidated the DEQP-GLES3 expectations for the functional.transform_feedback* tests, updated some changed test names. These test expectations were collected from the 43.0 driver version. Bug: b/285628492 Bug: angleproject:8212 Change-Id: I224a2eec33ee56b7303d17aebd998de65354106c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4626241 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Constantine Shablia 0e3d200d 2023-06-21T07:01:42 Tests: Add paletted formats glGetTexImageANGLE tests Test: angle_end2end_tests --gtest_filter=GetImageTestES1.PalettedTexImage* Bug: angleproject:7710 Change-Id: I1c7edcbeae86d88076deffb2b8484ecd85a4b773 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4629690 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Constantine Shablya <constantine.shablya@collabora.com>
Mohan Maiya 122b292d 2023-06-26T14:32:32 Fix bug in ProgramPipelineObjectBenchmark Bug: angleproject:5102 Test: ProgramPipelineObjectBenchmark* Change-Id: I8d596ce7d6d9866b3333e675b40d9aad470525e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4647096 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Steven Noonan 42c3a9fe 2023-06-23T03:53:09 Vulkan: support creating context with MoltenVK on macOS The Vulkan loader somewhat recently introduced a requirement that clients must opt-in to using portability implementations of Vulkan (such as MoltenVK). Since there is no native Vulkan driver for macOS (and therefore no alternative), unconditionally enable the portability enumeration extension there. Bug: angleproject:8229 Change-Id: I24f0f24e25abd277855ed9ac4de370cfb47d3266 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639495 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Amirali Abdolrashidi 232506e1 2023-05-15T19:19:39 Vulkan: Free the garbage memory before realloc The previous CL added the feature of freeing garbage memory in the event of device OOM. However, it was for image allocations only. * Extended finishing commands and freeing the garbage to buffers. * Added unit test to allocate buffer after freeing memory space on the device. Bug: b/280304441 Change-Id: I540b27a41b34d1ceb1cd3119213341c9f290ea38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4540209 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi 5f9548c3 2023-05-19T11:51:04 Vulkan: Free the garbage memory before realloc Currently image allocations fall back to system memory in case of a device OOM. However, in some cases, it is also possible to gain some memory by freeing garbage memory from the device. This allows us to keep the allocation on the device memory. * Updated the image allocation fallback, so we will try cleaning the garbage memory through the renderer before retrying the allocation. * finishOneCommandBatchAndCleanup() in RendererVk, which will call a similar function in its CommandQueue. It will be called until there are no more in-flight submissions. * The existing finishOneCommandBatchAndCleanup() in CommandQueue has been renamed to finishOneCommandBatchAndCleanupImpl(). * Updated the flags used for VMA image allocations. If any device memory is freed after garbage cleanup to make enough space for the new allocation, it will take precedence over the system memory. * Added unit tests in which a new image allocation could happen on the device after freeing the garbage memory. * They use a 2D texture and a 2D texture array for garbage. Bug: b/280304441 Change-Id: Ia5e605e180833b44af8c77550ab1b0b8ba21724e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4547941 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Charlie Lao 02292814 2023-06-01T14:46:05 Vulkan: Optimize the usage of FastMap in DescriptorSetDescBuilder While looking at disassemble of DescriptorSetDescBuilder::updateOneShaderBuffer() function, I noticed that there are a lot of CPU cycles spent in FastMap::operator[]. What happend here is that we are increasing size one by one as we build descriptorSet, and that hit `if (mData.size() <= key)` case and we end up resize the underline FastVector, and that resize also initialize the element with zeros, which immediately overwrite by actual data. Since we actually know the eventual size of DescriptorSetDescBuilder::mDesc/mHandles/mDynamicOffsets, we could just switch to angle::FastVector which will avoid this check size and grow every time we write to it. This CL switches the use of FastMap in DescriptorSetDescBuilder to FastVector. The only trick we need to watch out is that previously the new elements are always zero filled and now it does not. So we need to make sure we write every field of structure. This CL also renames WriteDescriptorDescBuilder to WriteDescriptorDescs since when it is read only we are passing it as const reference already, there is no added advantage to have two classes. Bug: b/282194402 Change-Id: I06a063cc51585fc17fbf0d5aa916b9aa0ab88dd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4581881 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi cba77bce 2023-06-26T14:30:58 Disable device OOM tests for Linux/NVIDIA * Disabled the device OOM test in VulkanImageTest for Linux/NVIDIA systems, due to potentially affecting other tests with flakiness. Bug: angleproject:8236 Change-Id: I4dc0e4f22149507350093708031e05ded5e5c18e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4647294 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi cafbf6e2 2023-06-22T22:50:32 Vulkan: Simplify active uniform check Bug: angleproject:7220 Change-Id: Ic0f26f3d09bac570d4ed3f791c456d569208424a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636869 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 61eda436 2023-06-15T14:47:35 Fix TexImage3D validation for 2D arrays below ES3 Currently if we try to define a 2D texture array in ES2, a crash occurs during its validation. Since texture3DOES only adds support to 3D textures, we should make sure the validation only passes if ES3 and above are used. * Added check for 2D texture array usage in validating glTexImage3D(). Bug: angleproject:8213 Change-Id: Ib477d8b6eec89c35d605a1b575bfb5519d19452e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4618955 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 4a4b13cc 2023-06-26T14:55:01 Fix SixteenBppTextureDitheringTestES3 formats Copy-paste mistake from https://crrev.com/c/4628974 Bug: b/284462263 Change-Id: Id9f78386a0c1495c4c2e32d0c5b18a8e2f5cc74a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4645735 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 2283d2d0 2023-06-15T18:40:28 Update the mustpass list that dEQP-EGL tests uses Android CTS and Khronos CTS use different set of dEQP tests. android/cts contains mustpass lists for Android CTS. We have test coverage in the Android CTS in Android testing infra, and we would like ANGLE standlone deqp test runner to cover the Khronos CTS. Update the dEQP-EGL test runner to use the mustpass list that Khronos CTS uses. Since the test lists changed, some tests in expectation files are no longer needed, as they are not within Khronos CTS mustpass list. Keeping them in the expectation file will cause test runner exception as the test runner does check if the test listed in the expectation file is in the mustpass list. Bug: b/286921997 Bug: angleproject:6277 Bug: angleproject:7506 Bug: angleproject:6528 Change-Id: I7851b854322985f564cbb56d804f04f663d947aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4619627 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Chris Forbes <chrisforbes@google.com>
Shahbaz Youssefi 2e209516 2023-06-26T11:58:50 Move state dirty bits definitions out of the class This is in preparation for a follow up change that splits the state class. Bug: angleproject:8224 Change-Id: Ic9b253583e40fcc93ff37605b6b6e1deb55a6e55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4631843 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya a31e8c30 2023-06-24T15:53:57 Refactor Image colorspace tests for better readability 1. Always upload color values encoded in sRGB colorspace for sampling tests and linear colorspace for rendering tests. Depending on attribute list, the test will either expect color decoded in linear space or sRGB color value as is 2. Add helper functions that determine expected output color for a given attribute list and EGLImage usage Refactor TEST and helper functions to account for the above updates Test: ImageTest*_Colorspace* Bug: angleproject:3756 Change-Id: I54ae22b2d379e6fdfa04429849de5efe9684caf4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4643452 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya 0fe6f282 2023-06-24T14:06:17 Reset and then populate frontend features during display initialize Overwritten features were never reset even if a display was terminated. On platforms that reuse displays for all tests in the end2end suite, overridden feature would leak into subsequent tests causing unexpected failure. Bug: angleproject:8235 Change-Id: I1b359bc762a2bca8db4e4dbc7a587604e5bd6a5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4643453 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi ec1f18db 2023-06-21T10:16:51 Vulkan: Remove ShaderVariableType and flatten info map With the conversion of the interface variable info map keys to SPIR-V ids, there is no longer a benefit to bucket resources by their type. This change removes this bucketing and flattens the map. Bug: angleproject:7220 Change-Id: If83cb02ca9e91f72dddb2deb7313fee40f9f06c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632577 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 04965dde 2023-06-23T02:54:24 D3D11: identify D3D11on12 in renderer string The renderer string didn't previously give any indicator of whether the context was created as D3D11 or D3D11on12. Bug: angleproject:8233 Change-Id: Iee8ae4698c1e08d1826249d92f232a153cd0ee4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639492 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b5f87c04 2023-06-20T20:22:15 Vulkan: Simplify shader interface variable map The shader interface variable map had a "resource index" -> info map to optimize descriptor set building. That avoided hashing the resource name when the rest of the map was name-based. With the map using SPIR-V ids now, there is no reason to maintain this map; SPIR-V ids can be used to look up the info just as efficiently. Bug: angleproject:7220 Change-Id: I619783dce558a59184955cc314c1f41e6733f1b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4630728 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Steven Noonan 7a38d614 2023-06-23T01:56:43 remove ScheduleYield, replace with std::this_thread::yield Instead of hand-rolling this function, just use std::this_thread::yield, which has the advantage of being cross-platform and using an underlying implementation that's actually more correct on Windows[1][2]. [1] https://github.com/microsoft/STL/blob/40640c6df9754ea031f8df7c720b89714d19df97/stl/src/cthread.cpp#L84-L86 [2] https://joeduffyblog.com/2006/08/22/priorityinduced-starvation-why-sleep1-is-better-than-sleep0-and-the-windows-balance-set-manager/ Bug: angleproject:8232 Change-Id: I9053fa362f328dc45b7c13f5f70818adf89a290f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639490 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 131acc31 2023-06-23T04:12:09 Vulkan: fix blob caching of initial pipeline cache When creating a new pipeline cache and the blob cache doesn't have a matching one we can load, we unintentionally skipped serializing it to the blob cache until the pipeline cache state changed later on. Bug: angleproject:8230 Change-Id: If86d1bd169a63da9f9a394284a754bccb7d52e20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639496 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
L. E. Segovia 0574f0ab 2022-03-10T16:26:23 CLRefPointer: fix reference to STL type for MinGW Clang See: https://invent.kde.org/graphics/krita/-/blob/master/3rdparty/ext_googleangle/02-patches_krita/0012-Fix-Clang-MinGW-target-build.patch Co-authored-by: Alvin Wong <alvinhochun@gmail.com> Bug: None Change-Id: I0b7acebf7246297cbf8aa5062256c7008f78cf7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4637586 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: L. E. Segovia <amy@amyspark.me>
Steven Noonan f6c7dc89 2023-06-23T02:21:02 Spinlock: implement ANGLE_SMT_PAUSE for ARM/ARM64 This intrinsic is available on GCC, Clang, and MSVC. Bug: angleproject:6067 Change-Id: I010eefa3417df196407fb8182c0de927f4bf0cab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639491 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 764f31be 2023-06-22T23:52:43 Add more BitSetArray tests Bug: angleproject:8224 Change-Id: I8835da245df52e1be2e3e4ea17e32ce8c438e51e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636870 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi 7169dc5f 2023-06-23T12:02:19 Fix vsync and offscreen for restricted_trace_perf * Updated the command used to run the trace so it would use the mode input, which includes --vsync and --offscreen. Bug: angleproject:8234 Change-Id: Ia761e369993183dcdfb66383f3006cf660044add Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4641272 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
L. E. Segovia 566f1ee4 2022-03-10T16:25:34 mathutil: Enable usage of builtins for MinGW GCC too See: https://invent.kde.org/graphics/krita/-/blob/master/3rdparty/ext_googleangle/02-patches_krita/0011-Fix-MinGW-build.patch Co-authored-by: Alvin Wong <alvinhochun@gmail.com> Bug: None Change-Id: I9663a11d62a61674b361fc46eeb53b3c3096ccbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4637585 Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: L. E. Segovia <amy@amyspark.me> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Gregg Tavares bc2d5ed0 2023-06-22T14:24:46 Fix wrong size computation in test Bug: angleproject:8227 Change-Id: Idde149465de57db4091847dfdb213a63bc4e3e2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4638742 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 16d65289 2023-06-20T17:27:01 Vulkan: Remove hashing of the SPIR-V id in variable map The interface variable ids are already mostly packed, so a flat array will do with the id as key. Bug: angleproject:7220 Change-Id: I17cded0378b1b67379b979b00d69bbe04088a840 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628975 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan ac4f52c4 2023-06-22T01:47:33 Vulkan: release all resources on RendererVk destroy The most important part of this is unloading the libvulkan handle. We open the handle in ::initialize but we were previously only unloading it in ::~RendererVk[1]. Since a DisplayVk (and RendererVk) are not destructed in between context creations, this meant that the libvulkan library handle reference count only increased, never decreased. [1] Which, incidentally, never gets invoked, ever. We create Display instances and they live forever in a static structure and we only ::initialize/::terminate them. Bug: angleproject:8225 Change-Id: I03da9b19f0c4ae3b5efacd07880aadb7ee77ebf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636882 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c1ba8e6f 2023-06-20T16:03:20 Vulkan: Flatten shader interface variable maps This change removes duplicate entries added in the shader shader interface variable maps. One level of arrayness (indexed by shader type) is removed from these maps as now there is only a single entry per linked resource/etc. Bug: angleproject:7220 Change-Id: Ibf2d06a0e1f68e68797c2066f36e14cb9e667f77 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628677 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Maksim Sisov 4ed2d403 2023-06-22T11:49:41 metal: disable render to texture extension. It's implemented incorrectly in the current backend (or not implemented at all). Once it's fixed, we can turn on that again. Bug: angleproject:3107, angleproject:6395, chromium:1424910 Change-Id: I176327b027b25084525a242c81c1625efe43c89a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4634659 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 75065c57 2023-06-22T09:49:59 Vulkan: Fix email in OWNERS Bug: None Change-Id: I552b0192e5d191a7d759c15b809486b7f1ee1f57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636781 Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang 70ecc80f 2023-06-14T11:12:52 Metal: Store MSL in shared pointers to immutable strings The translated metal shader source is quite large and we store copies in both ProgramMtl and mtl::LibraryCache. Instead, store the source in shared_ptrs to immutable strings. This has a nice side effect of simplifying the cache keys for mtl::Library cache and avoiding string copies. This saves about 4% GPU process memory. Since these strings are rarely accessed, the overhead of shared_ptr is not a concern. Bug: chromium:1329376 Change-Id: I507529ff1e25cc6aafead272fc9bb6ab0b8dbe88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614361 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 8bc7fffb 2023-06-21T10:54:27 Include framebuffer completeness reason in draw errors Framebuffers have a much more detailed "reason" string for framebuffer completeness errors. Make sure that reason is printed when a draw call fails due to incomplete framebuffer. Rework how draw validation errors are stored to keep the extra GL error enum. Bug: chromium:1455725 Change-Id: I5984452c5aab4f8ccb73d43bd63bca1aae53e847 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632578 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang ecf245ff 2023-06-14T16:24:17 Metal: Don't force all incomplete textures to initialize ensureIncompleteTexturesCreated is called in every syncState and initializes all types of incomplete textures, even when they are not used. Skip it entirely. ContextMtl::getIncompleteTexture already lazily creates the incomplete textures, per type. This saves about 1mb (~5% of ANGLE's allocations for Chrome) of malloc'd memory per context. Bug: chromium:1329376 Change-Id: I14ab7098ce2e486383d1d0d41039f0e526755878 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615190 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Roman Lavrov e431b3e4 2023-06-20T16:42:16 Add pixels checks to bandingTest on Android +toggle GL_DITHER Bug: b/284462263 Change-Id: I69122d1d53d03a2e75d498e77a669099a568ab3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628974 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 6e99d6bc 2023-06-22T09:14:11 Only build angle_capture_tests_trace when building traces Some PGO build failed in Chromium. Standalone ANGLE testing is currently sufficient. Bug: chromium:1456291 Change-Id: I5a685020afdfe152348d282a28379c3b628d5964 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636681 Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi bbcf54bc 2023-06-16T16:02:08 Vulkan: Refactor uniform/block binding duplication code Previously, resource binding assignment was done as such: ``` for each shader stage assign bindings to textures assign bindings to blocks assign bindings to images etc ``` To deduplicate bindings when the same resource was used in multiple stages, a map was used, keyed by the resource's name, to detect when an already visited resource is encountered in a future stage. This was both inefficient and unnecessarily complicated. With this change, resource binding assignment is done as such: ``` for each texture assign one binding to all shader stages for each block assign one binding to all shader stages for each image assign one binding to all shader stages etc ``` The aforementioned map is removed. Because the resource bindings are now changed, the rest of the code (which sets up the pipeline layout, updates descriptor sets, sets dynamic buffer offsets, etc) are all updated to follow the above pattern. As a result, nested loops are avoided and duplicate entries in the variable map are never visited. Bug: angleproject:7220 Change-Id: Iaff7b5f8b2bada8ac5078d21e5c790bf0d27aca7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622011 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Steven Noonan ac263582 2023-06-19T12:26:44 Vulkan: add workaround for VK_EXT_full_screen_exclusive on AMD On outdated (but recent) AMD drivers, the Windows-only Vulkan extension VK_EXT_full_screen_exclusive appeared to be implicitly enabled and set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT mode. Even though ANGLE did not enable or interact with this extension at all, the driver was incorrectly returning VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT error codes on various swapchain operations when the full screen window focus was lost (i.e. alt-tab out and back in). Naturally, ANGLE was not expecting these error codes and did not know how to handle them. Depending on where the errors occurred, ANGLE might crash or retry creating the swapchain repeatedly. Treating the unexpected VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT error code as VK_ERROR_OUT_OF_DATE_KHR/VK_SUBOPTIMAL_KHR was not sufficient, because the driver would repeat the error on every swapchain operation, apparently expecting the error to be handled by a vkAcquireFullScreenExclusiveModeEXT call (even though that would make no sense, since the extension was not enabled). The incorrect driver behavior was reported to AMD and was fixed in recent driver releases. The earliest driver I've tested and know to be working is AMD's Adrenaline driver version 23.5.2 (VkPhysicalDeviceProperties calls this driverVersion 2.0.262/0x800106). The last known bad version was 0x8000e9. The simplest workaround on these older AMD graphics drivers is to explicitly enable the extension, but set it to VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT mode. On newer drivers we do not need to do anything with the extension and can ignore it. Bug: angleproject:8215 Change-Id: I7c58d47a0350f4b0bc1a77f200c1e2f72fcde8d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627279 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Nico Weber c23029d2 2023-06-21T14:19:00 [apple] Fix build with newer libc++ Using `return mPtr` without a `*` works too, but it looks lie these methods are unused, so just remove them. Bug: chromium:1454568 Change-Id: Ie4441ac611787765e354480561e6a0e25aefa159 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4631841 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Nico Weber <thakis@chromium.org>
Geoff Lang 954b3339 2023-06-21T11:13:38 Add internal format to TexStorage validation errors Print the hex value of the internal format when generating error messages about invalid internal formats in glTexStorage. Bug: chromium:1455725 Change-Id: Ia99c8891c5510590a3fcaf3699476942bf80b57c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632579 Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b28ba57e 2023-06-20T16:32:42 Update OWNERS Bug: None Change-Id: I20ed7c410967cb207c50e32af58abacc6ddb816c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628679 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 15156b1d 2023-06-19T11:58:20 Vulkan: disable graphics_pipeline_library on old NVIDIA drivers On drivers before R530, there are some transient visual glitches in rendering when using VK_EXT_graphics_pipeline_library. Basically you might see correct renders for a few frames, very incorrect renders for about 10-20 frames, and then it would render correctly from then on. This problem went away either at R530 or slightly after. This change sets the minimum version to R531, which is the first version I observed behaving correctly. Bug: angleproject:8218 Change-Id: I7af4f74c1469ecf2306dec0cab9062eff2ec5f2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627277 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7adf6532 2023-06-20T16:31:34 Remove unused helper classes Bug: angleproject:6954 Change-Id: I325f6a67b1f2f1dffdf051f83a8d4f29c4fe25dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628678 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 2e0b369d 2023-06-19T12:05:24 Vulkan: copy drawIndirectFirstInstance from physical device features Not doing so results in VVL errors (you need the GPU-assisted validation preset enabled to see this error): [ VUID-VkDrawIndexedIndirectCommand-firstInstance-00554 ] The drawIndirectFirstInstance feature is not enabled, but the firstInstance member of the VkDrawIndexedIndirectCommand structure at index 1 is not zero The Vulkan spec states: If the drawIndirectFirstInstance feature is not enabled, firstInstance must be 0 Bug: angleproject:8220 Change-Id: Ia43036584b85e4a7d9c3fcaf793be94b965f708f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627278 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 041e2731 2023-06-19T19:27:09 optimize glShaderSource string concatenation This optimizes for both memory usage and time. Before this change, we had a redundant copy of the shader source fragments in memory: - The user application - The ostringstream buffer - The final concatenated string The second one can be avoided by not using ostringstream. The second issue is that ostringstream will reallocate as we fill it, and depending on the number of input strings (and their size), it may reallocate several times. Since we aren't doing anything particularly fancy with the ostringstream, we can just preallocate the appropriately sized string and fill it with the input strings all at once. If we don't mind taking an additional dependency on abseil-cpp, this could also be implemented with absl::StrJoin, but it seems like a heavy dependency for something relatively simple. Tests run: GLSLTest.*ShaderLength* Bug: angleproject:8219 Change-Id: Idba277e7860116f858e7a86f4b03420dd383a52f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627282 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Steven Noonan 152e0d16 2023-06-19T14:44:09 Vulkan: detect Apple GPU as being a tile-based renderer This helps systems running MoltenVK on Apple Silicon. Bug: angleproject:8221 Change-Id: I28ce9b3dc153fb420429641776767fb71734685a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627276 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Steven Noonan 508eb865 2023-06-19T11:54:06 Vulkan: avoid crash on AMD drivers with MSRTT emulation If you have a multisampled color+depth framebuffer and discard depth before the end of the render pass, ANGLE skips assigning pDepthStencilResolveAttachment. Doing so is fine on most vendors, but on AMD drivers, the application will crash in the user mode driver when calling vkCreateRenderPass2KHR. Simply not adding the depth/stencil resolve structure to the PNext chain avoids the crash and allows the application to function normally. Bug: angleproject:8217 Change-Id: I0dc14c03d2b999e280a4d363e0296fd10812540c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627280 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 262784f4 2023-06-19T17:56:04 D3D11: unbreak instanced indirect multidraw with ushort indices The baseInstance parameter was not being passed in the unsigned short index case. Bug: angleproject:8216 Change-Id: If660c6d4125bfd2aff8f4fd3a9171194635d21c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627281 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 5aa818fd 2023-06-20T15:08:03 Assert !is_official_build in Android builds. Bug: angleproject:7381 Change-Id: I658cb0389fc5a12726ea873c3a2d5afb006b6953 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628674 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 681ca074 2023-06-16T15:03:13 Vulkan: Deduplicate SpvAssignLocations call in program pipeline Some logic already in SpvGetShaderSpirvCode was duplicated for program pipelines. In particular, this necessitated exposing UniformBindingInfo which is an internal detail of SpvAssignLocations. In a follow up, UniformBindingInfo will be removed altogether. Bug: angleproject:7220 Change-Id: I9fa60c716de6dfb0d3a72c4f4dd3822043bab308 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622010 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 7ef6452d 2023-06-14T16:02:46 Metal: Refactor hasValidRenderTarget checks Separate the computation of hasValidRenderTarget into a function and only call it if the cheaper check to allowRenderpassWithoutAttachment returns false. Bug: chromium:1329376 Change-Id: Id20a33913b7133a5aea82f53abb0a86664b4f2c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615188 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
L. E. Segovia a62cc521 2023-06-14T23:27:31 GL: fall back to WGL if EGL_ANGLE_surface_orientation unset When an app attempts to use the GL backend on Windows, there is currently an undocumented hard requirement for EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE. This is caused by EGL_ANGLE_surface_orientation not being fully implemented, so instead let ANGLE fall back to the slow WGL pipeline. See: I012168531d8c2e5b189671533cea9f57ec713538 BUG: angleproject:8201 Change-Id: I28c6a948a5fc0e3ebfff86c4cbf95c666f5c7cd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614646 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
angle-autoroll 174742fd 2023-06-18T13:07:00 Roll VK-GL-CTS from 7fcb3c6e0082 to f29bd2feeaff (19 revisions) Suppress dEQP-EGL failures. https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/7fcb3c6e0082..f29bd2feeaff 2023-06-18 lorenzo@khronosgroup.org Merge vk-gl-cts/github-main into vk-gl-cts/main 2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-06-16 piotr.byszewski@mobica.com Split pipeline.txt in vksc-default 2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-06-16 alexander.galazin@imgtec.com Fix check_build_sanity.py error 2023-06-16 lorenzo@khronosgroup.org Add missing line in AndroidGen.mk for vktFragmentShadingRateMiscTests.cpp 2023-06-16 rgarcia@igalia.com Test FSR in a pipeline without fragment shader 2023-06-16 ziga@lunarg.com Add xfb test drawing outside of xfb begin 2023-06-16 piotr.byszewski@mobica.com Test RT interaction with flags added by GPL 2023-06-16 rgarcia@igalia.com Test gl_SampleMaskIn with sample shading 2023-06-16 rgarcia@igalia.com Test enabling and disabling VRS statically 2023-06-16 rgarcia@igalia.com Test allocation and binding offsets with index buffers 2023-06-16 pdaniell@nvidia.com Remove the "Error:" prefix with NotSupported results 2023-06-16 jenatali@microsoft.com Fix skipping when synchronization2 is unsupported on Windows 2023-06-16 gleese@broadcom.com Remove 64-bit test code for builtins which don't support it 2023-06-16 jenatali@microsoft.com Don't include windows.h in the vk namespace 2023-06-16 rgarcia@igalia.com Disallow direct linking of GLES libraries by default 2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-06-15 younggwan.kim@arm.com Merge dev/EXT_shader_tile_image 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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:8214 Change-Id: I84598fb784adf1e30abbeaac3c53dcd97108d58a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4624553 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 84379a52 2023-06-16T14:12:54 Vulkan: Mark the location of vertex output in the compiler So the SPIR-V transformer doesn't have to discover it. Bug: angleproject:7220 Change-Id: I13a4c7a205e664195a9631169a207c248497143a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621789 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 803c3b10 2023-06-16T13:53:25 Vulkan: Mark the location of xfb emulation in the compiler So the SPIR-V transformer doesn't have to discover it. Bug: angleproject:7220 Change-Id: I5c74e5f3cbd8fe0c03ee2c445fddb7a0ef36fb91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621788 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi ad13d41f 2023-06-16T13:28:58 Vulkan: Mark the beginning of the shader in the compiler So the SPIR-V transformer doesn't have to discover it. Bug: angleproject:7220 Change-Id: I2a41656cc224d1fc02e656da15d9781705a6e785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621787 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Geoff Lang b46344bb 2023-06-12T13:50:40 Metal: Cache render pipelines at the context level Cache Metal render pipelines in a new mtl::PipelineCache which lives at the context level. This allows us to clean up unused pipelines from programs that are not actively used. The cache limits were chosen based on running Chromium. Without a limit, the total number of pipelines peaks at ~200. With frequent GCs, the active working set usually sits at ~60 pipelines. Bug: chromium:1329376 Change-Id: Ifa83b797c893684294e16dd638f6b3a35e1d043f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608486 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi fb0174fa 2023-06-16T12:08:51 Fix clearing of extended dirty bits in draw calls When syncing all dirty bits (i.e. in draw calls), the extended dirty bits were not cleared. This caused the extended dirty bits to be resynced every time. Credit Steven Noonan <steven@uplinklabs.net> Bug: chromium:1410191 Change-Id: I7042462bbc4346880eb99128b3501cf130987505 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615239 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi b37df0c7 2023-06-16T12:05:03 Vulkan: Don't output SPIR-V debug info in release Now that the SPIR-V transformer no longer relies on names, we can avoid generating them in the compiler in the first place. This both removes the need for stripping them out and makes the shaders (which are cached) a bit smaller. Bug: angleproject:7220 Change-Id: Ie636ac0ee62cf2730a409872041d22c066fc22ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615238 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 04f609d7 2023-06-09T16:03:28 Vulkan: Use user names directly in SPIR-V ... instead of prefixing them with _u. The transformer no longer relies on debug info, which means SPIR-V names can be completely arbitrary. There is no risk of collision with ANGLE internal names because it doesn't matter for SPIR-V, and SPIR-V Cross is able to handle duplicate names. This change makes the output of SPIR-V Cross on generated shaders more readable as it's not cluttered with _u before every name. Bug: angleproject:7220 Change-Id: If46f7c82f908b0d65f8be49e297384ab659369e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615237 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 24f4007b 2023-06-08T00:41:55 Vulkan: Use SPIR-V ids instead of names in the transformer This change removes the SPIR-V transformer's reliance on type and variable names. As a result: - String hashing is removed from the info map data structure and the SPIR-V transformer - The ID discovery class is entirely removed - Internal variable names have become a detail of the compiler alone (and are no longer exposed as part of the compiler interface) - Some front-end name tracking is removed ("parentStructMappedName", etc) This change also properly cleans up xfb emulation types that were previously left over. This change allows the SPIR-V compiler to emit user strings as-is instead of prefixing them with `u_` leading to more readable debug shaders. Additionally, it will make it possible not to emit debug info at all. Both of these changes will be done in follow ups. Bug: angleproject:7220 Change-Id: Iaa127496209a27aaae2e0d14c41b22fffb0b72a2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600610 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e394cb46 2023-06-10T23:12:35 Vulkan: Refactor framebuffer fetch shader emulation This change fixes simultaneous usage of EXT_shader_framebuffer_fetch and ARM_shader_framebuffer_fetch, which previously declared two identical input attachment variables. The code is additionally greatly simplified. Bug: angleproject:8196 Bug: angleproject:8197 Bug: angleproject:8198 Change-Id: Iaaa2a5539a95727e67001a4da1d45092c9db4f2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615187 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski de28b89a 2023-06-15T12:31:26 Android: Add Pixel 7 entries to End2End expectations Bug: b/285628492 Bug: angleproject:8212 Change-Id: I205ff24f53c03c0a0634b35b6a7e76b79f21d622 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4617583 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Roman Lavrov 58055032 2023-06-16T10:33:26 Remove _shardN suffix from tests when it's not necessary. My understanding is that we only need this for --split-shard-samples. Otherwise we still get _shardN suffix from the shard but the test only ran on a single shard so there is no point in that. _shardN added in https://crrev.com/c/3937044 --split-shard-samples disabled in https://crrev.com/c/4605335 Example of _shardN: https://ci.chromium.org/ui/p/angle/builders/ci/linux-nvidia-gtx1660-perf/1704/overview Bug: angleproject:7671 Change-Id: Iaec4eb81e6ebad424cfc2ebfcbc7eda312cd1bba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615538 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Geoff Lang 0e31cb40 2023-06-12T13:46:23 Turn CreateMTLRenderPipelineDescriptor into a method Refactor CreateMTLRenderPipelineDescriptor into a method on RenderPipelineDesc so it's externally visible. Bug: chromium:1329376 Change-Id: I22780b630ff9230ae2f3912c3bf4fd70a78d3ce5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608485 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Geoff Lang 7f9e9fce 2023-06-12T15:02:58 Metal: Remove copy constructors in various util classes By using a different array initializer in RenderUtils, the copies are not neccessary. Bug: chromium:1329376 Change-Id: Iec98a31741457f8d76a84f0340772167d7b9700a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4607151 Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Colin Blundell 6e3808db 2023-06-15T09:13:18 Record duration of syncFromNativeContext() Bug: chromium:1168587 Change-Id: I9e9770ab253df8ca4fd45979f2e5d67932c0a2ae Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614517 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Colin Blundell <blundell@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
L. E. Segovia edf58105 2023-06-14T22:24:25 Validate GL backend after dispatch table initialization This commit adds a check to ensure that the GL backend's functions have been properly initialized. This may happen with third party build toolchains, like vcpkg, which reimplement parts of the existing build system. Bug: angleproject:8195 Change-Id: Iaca2200a563c5049d90acad57785088c94b4e580 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614645 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 46ff02f8 2023-05-18T13:52:29 Capture/Replay: Initial setup for angle_capture_tests Implements the first part (FrameCapture) of the proposal go/frame-capture-and-interpreter-testing Adds a basic test (CapturedTest) with a few frames. This test gets captured by capture_tests.py into a temporary directory and the resulting files are diff'ed with the files under expected/ A diff fails the test. When capture changes, the workflow would be to run the command indicated by the error message in the test which will overwrite the files with new ones so that they can be added to the CL. Example test failure on capture change: https://chromium-swarm.appspot.com/task?id=62b5f4034527c610 when testing https://crrev.com/c/4598046/3 Tests in CI: https://screenshot.googleplex.com/77o8vZVuj8AbFRj Also adds a "angle_capture_tests_trace" lib with the trace just to test that this capture also builds, the lib is not currently loaded by anything. Bug: b/286067106 Change-Id: I7d5f6eed088d84f9e3eb8a72b24b1d92515fff38 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545408 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Igor Nazarov 3545ae0c 2023-06-09T16:11:47 Add isContextMutexStateConsistent() ASSERT Added `gl::Context::isContextMutexStateConsistent()` method. This method is primarily used to check if "SharedContextMutex" activation worked successfully. It is automatically called in the updated `ScopedContextMutexLock` before unlocking. This is to catch possible errors using ASSERT during normal ANGLE operation in applications and tests. The `ScopedContextMutexLock` is now also used instead of the `std::lock_guard<egl::ContextMutex>` in the `SCOPED_SHARE_CONTEXT_LOCK`. No performance regression observed. Important note: `lockAndActivateSharedContextMutex()` is NOT 100% safe regardless of the `kActivationDelayMicro` value, so `ASSERT` may still fail. However, failure does not necessary mean that there will be an undefined behavior, it means that UB might happen. Bug: angleproject:6957 Bug: chromium:1336126 Change-Id: Iee7357fede0d37fa315fe2cc7d27a4e30a304194 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610227 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Geoff Lang bd5a7f24 2023-06-12T13:22:43 Metal: Set alphaToCoverageEnabled in checkIfPipelineChanged alphaToCoverageEnabled was tweaked to false for non-multisampled rendering cases in RenderPipelineCache::createRenderPipelineState but this caused a copy and could be done much earlier during context state syncing. Bug: chromium:1329376 Change-Id: I37a461554e1e2b162313b4a952baa1526356db3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608484 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kramer Ge 88c6dfcc 2023-06-02T16:09:24 Mali: Make the placeholder FBO complete for timer queries Change the bindFramebufferForTimerQueries workaround to ensure the framebuffer is complete. Bug: chromium:1356053,b/269068358 Change-Id: Ief3198fdc4800468670a3f4323a1ffd3ca083c6f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4582606 Auto-Submit: Kramer Ge <fangzhoug@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuxin Hu 5a5f21f4 2023-06-14T14:05:41 Disable supportsExtendedDynamicState on ARM There are multiple issues with dynamic states on ARM. Previously we have disabled individual dynamic state that had issues, but it turns out some dynamic states need to be enabled/disabled together for tests traces to work correctly. Disabling the supportsExtendedDynamicState until all the issues are addressed. Bug: b/287318431 Bug: b/285196249 Bug: b/286224923 Change-Id: If2f039b8392898e1e42b5da6b1277e82818a1b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615995 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu ecc287a8 2023-06-10T22:20:02 Clean up skipped deqp khr gles32 tests on Pixel 6 Remove deqp khr gles32 test suppression on Pixel 6 that are no longer failing. Remove suppression of below tests KHR-GLES32.core.texture_buffer.texture_buffer_texture_buffer_range KHR-GLES32.core.compressed_format.api.texstorage_accepts_compressed_format KHR-GLES32.core.compressed_format.api.invalid_inconsistent_data_size KHR-GLES32.core.compressed_format.api.invalid_inconsistent_data_size_array KHR-GLES32.core.compressed_format.api.invalid_offset_or_size Remove suppression of below tests on Android Vulkan KHR-GLES32.core.constant_expressions.*geometry KHR-GLES32.core.shader_macros.fragment_precision_high_geometry KHR-GLES32.core.texture_cube_map_array.stencil_attachments_*mutable_layered KHR-GLES32.core.texture_cube_map_array.*tessellation* KHR-GLES32.core.texture_cube_map_array.sampling Restrict suppression of below tests on Pixel4 Vulkan KHR-GLES32.core.geometry_shader.* KHR-GLES32.core.texture_cube_map_array.*geometry* KHR-GLES32.core.separable_programs_tf.geometry_active KHR-GLES32.core.texture_cube_map_array.color_depth_attachments KHR-GLES32.core.texture_cube_map_array.fbo_incompleteness KHR-GLES32.core.tessellation_shader.* KHR-GLES32.core.texture_cube_map_array.*tesselation* KHR-GLES32.core.constant_expressions.*tess_control KHR-GLES32.core.constant_expressions.*tess_eval KHR-GLES32.core.separable_programs_tf.tessellation_active KHR-GLES32.core.shader_macros.fragment_precision_high_tess_* KHR-GLES32.core.texture_border_clamp.* KHR-GLES32.core.gpu_shader5.*clamp*_border KHR-GLES32.core.gpu_shader5.*clamp*_edge Restrict suppression of below tests on Pixel6 Vulkan and Windows Nvidia Vulkan: KHR-GLES32.core.texture_border_clamp.Texture2DDC16Linear KHR-GLES32.core.texture_border_clamp.Texture2DDC32FLinear Add test suppression on Pixel 6 Vulkan KHR-GLES32.core.tessellation_shader.vertex.vertex_ordering KHR-GLES32.core.tessellation_shader.tessellation_shader_tessellation.gl_InvocationID_PatchVerticesIn_PrimitiveID KHR-GLES32.core.tessellation_shader.tessellation_shader_quads_tessellation.degenerate_case KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule2 KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule5 KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule6 KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule4 KHR-GLES32.core.tessellation_shader.tessellation_shader_point_mode.points_verification KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_tessLevel KHR-GLES32.core.tessellation_shader.vertex.vertex_spacing KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule7 KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_in KHR-GLES32.core.tessellation_shader.tessellation_shader_triangles_tessellation.inner_tessellation_level_rounding KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.data_pass_through KHR-GLES32.core.tessellation_shader.tessellation_shader_tessellation.TCS_TES KHR-GLES32.core.tessellation_shader.tessellation_shader_quads_tessellation.inner_tessellation_level_rounding KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule3 KHR-GLES32.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_MaxPatchVertices_Position_PointSize KHR-GLES32.core.tessellation_shader.tessellation_shader_triangles_tessellation.identical_triangles KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule1 Bug: b/224537784 Bug: angleproject:5579 Bug: angleproject:5557 Bug: angleproject:5978 Bug: angleproject:3577 Bug: angleproject:3573 Bug: angleproject:6441 Change-Id: Ia734217c340fd927a93ea385120d0cf952cd428d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606544 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 9f158eb5 2023-06-10T22:14:16 Clean up skipped deqp khr gles31 tests on Pixel 6 Remove deqp khr gles31 test suppression on Pixel 6 that are no longer failing. Remove the suppression of below tests: KHR-GLES31.core.texture_buffer.texture_buffer_texture_buffer_range Restrict the suppression of below tests on swiftshader, windows nvidia vulkan, and pixel6 vulkan KHR-GLES31.core.texture_border_clamp.Texture2DDC16Linear KHR-GLES31.core.texture_border_clamp.Texture2DDC32FLinear Remove the suppression of below tests KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength* Restrict the suppression of below tests on swiftshader KHR-GLES31.core.arrays_of_arrays.ConstructorsAndUnsizedDeclConstructors1 KHR-GLES31.core.arrays_of_arrays.ConstructorsAndUnsizedDeclConstructorSizing1 Bug: angleproject:3573 Bug: angleproject:5978 Bug: angleproject:4107 Bug: angleproject:4300 Bug: angleproject:4108 Bug: angleproject:4188 Bug: angleproject:4190 Bug: angleproject:4240 Bug: angleproject:6295 Bug: b/224537784 Change-Id: I2c4d67ad3c50381ece4ed6241657b79402c91d3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606543 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 8df249d7 2023-06-10T22:09:12 Clean up skipped deqp khr gles3 tests on Pixel 6 Remove deqp khr gles3 test suppression on Pixel 6 that are no longer failing. Restrict the suppression of below tests on Pixel4 Vulkan KHR-GLES3.packed_depth_stencil.clear_buffer.depth32f_stencil8 Restrict the suppression of below tests on NVIDIA Vulkan and Android Vulkan KHR-GLES3.packed_pixels.varied_rectangle.* Restrict the suppression of below tests on NVIDIA Vulkan and Android Vulkan KHR-GLES3.packed_pixels.pbo_rectangle.r8_snorm KHR-GLES3.packed_pixels.pbo_rectangle.rg8_snorm KHR-GLES3.packed_pixels.pbo_rectangle.rgba8_snorm KHR-GLES3.packed_pixels.rectangle.r8_snorm KHR-GLES3.packed_pixels.rectangle.rg8_snorm KHR-GLES3.packed_pixels.rectangle.rgba8_snorm Bug: angleproject:3683 Bug: angleproject:6678 Bug: angleproject:8048 Bug: b/224537784 Change-Id: Id24591e3bc21fa263fa64d3bd812d82209b8c5fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606542 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 57cccfd4 2023-06-10T22:05:56 Clean up skipped deqp gles31 tests on Pixel 6 Remove the deqp gles31 test suppression on Pixel 6 that are no longer failing. Below tests no longer fails on win-test bot, remove them from the expectation file: dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48 dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.36 Restrict the suppression of below tests on NVIDIA Vulkan dEQP-GLES31.functional.image_load_store.3d.*single_layer Restrict the suppression of below tests on Pixel4 Vulkan dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2* dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5* Remove the suppression of below tests on Android Vulkan dEQP-GLES31.functional.stencil_texturing.misc.base_level Remove the suppression of below tests on Pixel6 dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.rules.internal_different_precision Bug: b/224537784 Bug: angleproject:3445 Bug: angleproject:6021 Bug: angleproject:4080 Bug: angleproject:5277 Bug: angleproject:7488 Change-Id: I9baff33ade443d2ad28d1bc7a1333e0c672942c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606541 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 5ff9d931 2023-06-10T22:00:41 Clean up skipped deqp gles3 tests on Pixel 6 Remove deqp gles3 test suppression on Pixel 6 that are no longer failing. Undefined behaviors in below test should have been addressed by the upstream change in VK-GL-CTS: https://github.com/KhronosGroup/VK-GL-CTS/commit/5d286e0daeac8afaafc46b16d28991fab971240b Remove the suppression of them: dEQP-GLES3.functional.shaders.operator.unary_operator.minus.lowp_uvec4_vertex dEQP-GLES3.functional.shaders.operator.unary_operator.minus.mediump_uvec4_vertex Restrict the suppression of below tests on NVIDIA and MAC dEQP-GLES3.functional.fbo.completeness.renderable.*.r8_snorm dEQP-GLES3.functional.fbo.completeness.renderable.*.rg8_snorm dEQP-GLES3.functional.fbo.completeness.renderable.*.rgba8_snorm Bug: b/224537784 Bug: angleproject:1101 Bug: angleproject:6214 Bug: angleproject:8048 Change-Id: Ic227be3e08b85f9f812171faafbbb1d421e9c30a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606540 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu d73ce6e3 2023-06-10T21:57:43 Clean up skipped deqp gles2 tests on Pixel 6 Update comments to explain why the test dEQP-GLES2.functional.flush_finish.* need to be skipped. Bug: b/224537784 Bug: angleproject:1034 Change-Id: I09dbf3134006a76129e6e4e483ac43616c550418 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4606539 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 97e3851d 2023-06-10T21:52:28 Clean up skipped deqp egl tests on Pixel 6 Remove the deqp test suppression on Pixel 6 that are no longer failing. Restrict suppression of below tests on Android Vulkan and Pixel 4 GLES dEQP-EGL.functional.native_color_mapping.native_window.* dEQP-EGL.functional.native_coord_mapping.native_window.* Restrict suppression of below tests on Pixel 4 Vulkan dEQP-EGL.functional.image.api.create_image_gles2_android_native_rgb8 dEQP-EGL.functional.image.create.gles2_android_native_rgb8_read_pixels dEQP-EGL.functional.image.create.gles2_android_native_rgb8_texture dEQP-EGL.functional.image.create.gles3_android_native_array_rgb565_texture_array dEQP-EGL.functional.image.create.gles3_android_native_array_rgb8_texture_array dEQP-EGL.functional.image.create.gles3_android_native_array_rgba8_texture_array dEQP-EGL.functional.image.modify.android_native_rgb8_renderbuffer_clear_color dEQP-EGL.functional.image.modify.android_native_rgb8_tex_subimage_rgb8 dEQP-EGL.functional.image.render_multiple_contexts.gles2_android_native_rgb8_read_pixels dEQP-EGL.functional.image.render_multiple_contexts.gles2_android_native_rgb8_texture dEQP-EGL.functional.image.create.gles3_android_native_array_*_render_sample_texture_array Restrict suppression of below tests on Swiftshader and Nvidia Vulkan dEQP-EGL.functional.create_context_ext.gl_30.* dEQP-EGL.functional.create_context_ext.robust_gl_30.* Bug: b/224537784 Bug: angleproject:6533 Bug: angleproject:6277 Bug: angleproject:7506 Bug: angleproject:7533 Change-Id: I769bb1ef15c187ae0de62cc901f907cb095dc73a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4602771 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 36c3e0f5 2023-01-17T17:42:59 Implement "Shared Context Mutex" functionality. Existing implementation uses single `GlobalMutex` for - EGL calls - GL calls for Contexts with concurrent access. This CL introduces abstract `egl::ContextMutex` with two implementations: - SingleContextMutex; - SharedContextMutex<Mutex>; Note: `std::mutex` is used in this commit. It is very easy to change mutex type either at compile-time or at run-time (single type per Display). When Context: - is not Shared; - does not use `EGLImage`s; - does not use EGL_DISPLAY_TEXTURE_SHARE_GROUP_ANGLE - does not use EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE then it will be using `SingleContextMutex` with minimal overhead. Before such Context is used as `shareContext` or uses `EGLImage` its mutex replaced by `SharedContextMutex<Mutex>`. The `GlobalMutex` is only used for EGL calls, while `egl::ContextMutex` implementations for GL calls. Because some EGL calls use Context, explicit `egl::ContextMutex` lock is required. This is implemented by generating "egl_context_mutex_autogen.h" header, and insertion of `ANGLE_EGL_SCOPED_CONTEXT_LOCK()` macro before `ANGLE_EGL_VALIDATE()` in each EGL entry point. Implementation in "egl_context_lock_impl.h" returns lock for required APIs. Special cases of `egl::ContextMutex` lock handled separately. `std::unique_lock<>` is not used for performance reasons. `egl::ContextMutex` explicitly locked when capturing EGL calls. Fixes EGLImage problem: https://chromium.googlesource.com/angle/angle/+/e18240d136d15e5cdfa4fa4a6355ca21c8d807b6 Mark contexts as shared when importing EGL images. Details: - EGLImage inherits Context's mutex when created. Mutex is used when the EGLImage accessed or destroyed. - When EGLImage is used in Context with other `egl::ContextMutex`, two mutexes are merged into one. - After the mutex merge, Context Groups will remain separate, but will not be able to run in parallel. Fixes race when checking `context->isShared()` in the `SCOPED_SHARE_CONTEXT_LOCK()` macro. One Context may start executing GL call while not "Shared", but become "Shared" inside the call. New (second) "Shared" Context may immediately start using GL and potentially corrupt some "Shared" state. Possible performance benefit: allows parallel execution in some cases, when single `GlobalMutex` would block. Important note: Process of replacing the `SingleContextMutex` by `SharedContextMutex<Mutex>` is not 100% safe. This mean that original Context may still be using `SingleContextMutex` after activating `SharedContextMutex<Mutex>`. However, this was always the case before introduction of this CL. Old `Context::mShared` member update was not synchronized in any way at all. In other words, this solution does not 100% fix the original problem. For 100% safe solution `SingleContextMutex` should not be used (always pass `SharedContextMutex<Mutex>` to the `gl::Context` constructor). See `lockAndActivateSharedContextMutex()` for more details. CL adds new build option: angle_enable_shared_context_mutex = true Behavior with other build options: - When: `angle_enable_shared_context_mutex` is disabled or `angle_enable_share_context_lock` is disabled or `angle_force_context_check_every_call` is enabled, Contexts will always have `SingleContextMutex`, however it will be only used in special cases. `SCOPED_SHARE_CONTEXT_LOCK()` will use `GlobalMutex` when applicable. - Otherwise, `SCOPED_SHARE_CONTEXT_LOCK()` will use `egl::ContextMutex`. Some GFXBench "1080p Driver Overhead 2 Offscreen" performance numbers. Tested on S906B (Samsung Galaxy S22+) on old ANGLE base: https://chromium.googlesource.com/angle/angle/+/807c94ea85e046c6f279d081d99f0fb1bcf1191a Capture/Replay: Adjust tests do adhere to capture limits Each test result is an average frame number from 6 runs. SingleContextMutex 6579 ( +0.13%) (old) GetContextLock() (mShared is false) 6570 Forced `mShared = true` or NOT using `SingleContextMutex`. SharedContextMutex<std::mutex> FORCE 5061 (-22.97%) (old) GetContextLock() FORCE 4766 (-27.46%) Bug: angleproject:6957 Bug: chromium:1336126 Change-Id: Idcd919f9d4bf482b9ae489bd8b4415ec96048e32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374545 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 82151df0 2023-06-13T15:55:04 Android: Pixel 7 and Oppo Flip N2 device support Add device detection for test expectation files. Bug: b/285628492 Bug: angleproject:8205 Change-Id: Ia4ed8f7adc4f65ebb36c3248edadb3900b4caf58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615663 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Mike Schuchardt af1768a4 2023-06-13T15:11:17 Android: Add Galaxy A34, A54 and Oppo Find X6 Adds device detection for use in expectation files Bug: b/285047631 Bug: b/285047394 Bug: b/285630872 Change-Id: I30361d7bc1a0a08441c8b5afe64d4b5f22ae4ddb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4611333 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Yuxin Hu 3a3a3c65 2023-05-31T23:06:57 Remove override test31Context.cpp Remove the override test31Context so that 1) we can run deqp test suites on Pixel devices with the same configuration as Android CTS test runner. 2) those deqp tests that require a GLES 3.2 context will not be skipped and can execute on devices that supports GLES 3.2. Since the deqp test runner overrides the feature exposeNonConformantExtensionsAndVersions with "true" value, a context is created regardless of whether the device supports GLES 3.2. However, not all of the devices are GLES 3.2 conformant, we will suppress those tests that are failing on non-conformant devices. Bug: b/224537784 Bug: angleproject:3687 Bug: angleproject:3688 Bug: angleproject:6678 Change-Id: I2a549537bdbb2c0356fcccaa96291229c699ed0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4559445 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Peiyong Lin ce7b9602 2023-06-13T22:44:23 Avoid clearing global settings when register receiver. Global settings can be set by adb command and hence clearing the all global settings values are not ideal. Previously ANGLE apk triggers a clear when device boot is completed because we register the receiver and immediately trigger the callback. However, that causes race condition as our testing infra will set up the ANGLE per-application override to run tests on top of ANGLE apk. This patch removes that trigger. Bug: b/285594264 Test: Verify per-application override is no longer cleared Change-Id: Ic10703b72593cee7f067570a523f668553047ae2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4611447 Reviewed-by: Solti Ho <solti@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Peiyong Lin <lpy@google.com>
Ian Elliott 14339812 2023-06-13T10:00:39 Merge Galaxy A23 and S23 e2d expectations where can Many of the Samsung Galaxy A23 and S23 (all Qualcomm GPU) expectations were common, and so they are merged into a common GALAXYQUALCOMM ID. Bug: b/285045753 Bug: angleproject:8185 Change-Id: I5eb44f5de969763df290a938935a3a76ea3aab98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610479 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Romaric Jodin 8882feeb 2023-06-13T09:24:23 common: linux: add support for DRM_FORMAT_NV12 In DrmFourCCFormatToVkFormats convert DRM_FORMAT_NV12 to VK_FORMAT_G8_B8R8_2PLANE_420_UNORM. DmaBufImageSiblingVkLinux can already consume it. BUG: b/277798516 Change-Id: I3173763101cf926fb2277651918631ec4de76e96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4604507 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 3a42d024 2023-06-13T13:37:35 Only import xvfb on Linux. Allows to run certain scripts with python3 (instead of vpython3) on Windows. Same as testing/scripts/common.py: https://crsrc.org/c/testing/scripts/common.py;drc=dfebdf76453bb843c0910d8a3e74468f6ab4a474;l=25 Bug: b/286067106 Change-Id: I57f5478082c2147bb5e9cf98baae762b8b844cec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610084 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 86e21fa2 2023-06-12T13:36:21 Vulkan: Refactor angle::Format depth/stencil checks Bug: b/246008627 Change-Id: If0a2992c5bd66adf27c6866aea04e54ba465a522 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608489 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi ef582ba3 2023-06-13T00:22:34 Vulkan: Suppress vertex attribute divisor VUID ... to unblock the roller. Need to investigate if the failure is real. Bug: angleproject:8203 Change-Id: I958de60188a67e519d7d3b27c52b9ea260d36d80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610083 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Geoff Lang 18010f58 2023-06-12T16:56:11 Metal: Limit the debug spew for blocked cache reads/writes When running tests in debug builds, most of the output is logging about blocked reads and writes to the metal system cache. Limit it to 5 messages per type. Bug: None Change-Id: Id10e901d2d96164a86d8fdc7dafec14f81b700fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4607152 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>