src


Log

Author Commit Date CI Message
Roman Lavrov 16b9a16a 2023-05-26T14:45:15 Add supports_legacy_dithering feature VK_EXT_legacy_dithering => VkPhysicalDeviceLegacyDitheringFeaturesEXT.legacyDithering => supportsLegacyDithering Now getting enabled=true on Android master. Bug: b/284462263 Change-Id: Ibf43184c78d9847044b10413d2050b653e452c9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567572 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 02e7f967 2023-05-25T14:54:49 Translator: Remove the "variables" option Variable collection is invariably enabled by the front-end as well as other major users of ANGLE such as Firefox. All translator backends except GLSL force-enable variable collection either way. This change removes this compile option and enables variable collection unconditionally. The flag itself remains in ShCompileOptions until references to it are removed from Chromium. Bug: chromium:1447314 Change-Id: I4d3b30c1bfbd345c5ad269abc62c0a6a59de2f56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568524 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3f97a29e 2023-05-26T15:03:02 D3D11: Also unbind DSVs when unbinding conflicting resources Depth stencil views can also cause conflicts when trying to bind them resource as a shader resource and depth stencil at the same time, even for compute shaders. Bug: dawn:1291, angleproject:8171 Change-Id: I759556f7a8a888f1d4d6a042c26d16eedd83d2b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567573 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 055c72ac 2023-05-25T09:22:26 Suppress AllocateVMAImageWhenDeviceOOM for AsyncCQ Bug: angleproject:8174 Change-Id: I28e7e8bdc26055f2ad03f2842676330430b579b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568283 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Mark Lobodzinski c5282661 2023-05-24T15:33:19 Tests: Add Infinity Ops Trace Test: angle_trace_tests --gtest_filter=TraceTest.infinity_ops Bug: b/284273677 Change-Id: I19daa0a0e96a619ff3ec18074012cda213854947 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4566950 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 9b1ff7b1 2023-05-25T14:13:13 Translator: Fix SPIR-V translation without "variables" flag This flag is now assumed to always be true for the SPIR-V (and MSL) translators. They use the collected variables during translation. Bug: chromium:1447314 Change-Id: I69d31ce8144aec0bd2a7263bad6e5a366e922740 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567830 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov d9192d9a 2023-05-25T14:43:41 android_helper sets return code to 1 when test json is missing e.g. FATAL failures / other crashes Bug: b/278585075 Change-Id: I01850e547d782c302658653780b93699e9e91ffa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567831 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Kenneth Russell aea88562 2023-05-19T16:52:43 Reland "Metal: Optimized BufferSubData per device" This reverts commit ee64836f702332adaca58d9f452063a04b2da955 , relanding the patch stack described there. Between patchsets 1 and 5: - The shadow buffer allocation has been replaced with a multimap of precisely-sized buffers, rather than rounding up buffer sizes. - Garbage collection of shadow buffers is triggered in three situations: - A certain number of context switches have occurred; this number was hand-tuned to avoid GC every frame. - A certain number of command buffer submissions has occurred; this number was hand-tuned to GC no more often than every few seconds on representative workloads. - The total size of the allocated shadow buffers is more than 1 MB, and either more than twice the size at the last garbage collection, or 64 MB more than at the last garbage collection. In this case, aggressive GC is performed in order to reclaim shadow buffers more quickly. Performance before and after these changes appears identical on microbenchmarks. On one Figma test case, comparing GPU memory allocated inside the BufferManager, peak consumption is decreased by over 75%, and steady-state consumption decreases by over 88%. Patchset 6 adds a needed workaround for a bug in the AMDMTLBronzeDriver affecting uploads of client-side data, and therefore some dEQP tests. It also streamlines the aggressive GC. Bug: angleproject:7544 Change-Id: I81b061f0b33c27fa403527fa12d626f4e9c88ebe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4497413 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 6f2128a5 2023-05-25T10:45:08 Disable stencil write mask workaround on latest ARM The bug has been fixed in ARM r43. Bug: b/279715714 Bug: angleproject:7556 Change-Id: I01f08459ab90fed4eb1d57194cea3805d7868c18 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4566953 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 409bf134 2023-05-23T00:00:00 Metal: Adjust iOS and macCatalyst caps * Fix swapped iOS and macCatalyst versions for EXT_blend_func_extended and EXT_depth_clamp * Always use 13.1 as the lowest macCatalyst version Bug: angleproject:8121 Bug: angleproject:8047 Bug: angleproject:8015 Change-Id: I1f117de259d211cb8ce2463df59f8fee0e709ef5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568323 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Roman Lavrov c80c74a5 2023-05-25T12:58:23 Skip honkai_star_rail on Intel/windows Consistenly making Intel perf bots red by getting stuck Bug: angleproject:8175 Change-Id: I96b31d201b5b161c89ba6654cea48becbbc35169 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567829 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 93eee5d2 2023-05-18T16:33:25 Vulkan: Add the Sample decoration when sample shading The Vulkan spec was clarified that per-sample interpolation is not necessarily done when sample shading is enabled in the API. In this change, a SPIR-V transformation is added to add the Sample decoration to whatever varying is missing it when sample shading is enabled in the API. Bug: b/283017896 Change-Id: I121c740add6fc015c9140e6a04d37ea5300c8e57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544591 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang 9f1708b8 2023-05-24T16:26:44 GL: Check for VAO support before syncing from external ctxs Reading and writing VAO state was done unconditionally when syncing from external contexts. This caused crashes when trying to call null VAO-related function pointers. Bug: chromium:1447456 Change-Id: I866dd75a3f66d39d19c7da748d64a00ce02db5e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4562937 Reviewed-by: Peng Huang <penghuang@chromium.org> Reviewed-by: Colin Blundell <blundell@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Mike Schuchardt c18972fd 2023-04-05T10:22:38 Tests: Add Gangstar Vegas trace Test: angle_trace_tests --gtest_filter=TraceTest.gangstar_vegas Bug: b/280785771 Change-Id: Ia1d5de22d45979b44b0711fc510d2dfb7600b910 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4507340 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Charlie Lao 297687c6 2023-05-18T17:27:54 Vulkan: Reduce CPU overhead for uniform buffer change One of the common usage pattern is change uniform buffers and draw. Right now every uniform buffer change goes into ShaderResource dirty code path that rebuilds entire ShaderResource cache key and descriptor set etc. This CL keeps SHaderResource dirty code path, and will be used when program changes or framebuffer changes. But uniform buffer change will go down its own code path that only update uniform buffer related state. This CL along with prior two CLs reduced asphalt_9 average frame time (with multi context hacked away) from 5.375 ms to 5.2594 ms (reduced 2.15%). Bug: b/282194402 Change-Id: Ibae2895663918ddc10bf13bc559f1483f94d2e11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528314 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Charlie Lao 9445fbbe 2023-05-16T10:43:55 Vulkan: Move mWriteDescriptors out of DescriptorSetDescBuilder DescriptorSetDescBuilder has two data structures: mWriteDescriptors, which keeps track of "layout" of descriptorSet, and mDescriptorInfos, which is the actual cache key for descriptorSet. mDescriptorInfos will be updated every time buffer or image changes. But mWriteDescriptors is immutable with buffer/image, it is static per program executable (with exception of InputAttachment). Right now whenever there is a buffer or image change, we call into DescriptorSetDescBuilder and update both mWriteDescriptors and mDescriptorInfos. This CL moves mWriteDescriptors out of DescriptorSetDescBuilder, and stores it in ProgramExecutableVk. To deal with InputAttachment variation, ContextVk makes a copy of mWriteDescriptors when program is bound, and then update inputAttachment with framebuffer information. This not only removes unnecessary update of mWriteDescriptors, but also removes the requirement that mShaderBuffersDescriptorDesc has to reset and rebuild as a whole (because mWriteDescriptors keeps mCurrentInfoIndex which gets incremented as we build). This allows us to do further optimization in future to do piece meal update of mDescriptorInfos with only the changed data. Bug: b/282194402 Change-Id: I443c7c3b85b7a2e2e93c68d40ea102533c43f76a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4540280 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 2c836045 2023-05-18T12:00:41 Vulkan: Remove buffer/image tracking from DescriptorSetDescBuilder Right now DescriptorSetDescBuilder keeps an array of images and buffers as we build DescriptorSet cache key. Later on if we have a cache miss and allocated a new cache entry, we walk the array and tag the images and buffers with newSharedCacheKey. If we have a cache hit, the tracked images/buffers are unused and then cleared. This means the effort of keep track of these buffers are wasted when we have cache hit, which we expect to be most likely. This was initially implemented this way simply because of convenience, but there is really not a need to add another tracker for them, as they are readily available from context state anyway. This CL remove the tracking of images/buffers from DescriptorSetDescBuilder and replaced with context API to tag images and buffers with newSharedCacheKeywhen when we have a cache miss. Bug: b/282194402 Change-Id: I355c2fbabdfc573ce71c0a4281788c942d260271 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4539290 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev bdbcf763 2023-05-24T00:00:00 Compile ClampFragDepth on all backends Bug: angleproject:3970 Change-Id: I498f8c101e5939156eba6a071278f6ea912fee70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4561897 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang dd25d33d 2023-05-24T11:22:15 Don't use system info collection in the GL backend on Android The only way to gather system info on Android is with Vulkan or an existing OpenGL context (which we have), so skip the call to angle::GetSystemInfo on Android and use the OpenGL strings that are already gathered. It also tends to crash when creating Vulkan instances on some devices. Make sure the ARM vendor ID is detected from the renderer strings. Bug: chromium:1447111 Change-Id: Ic5c4109b422ca240bf5e8fc5cef6a2dae6d7d29d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4562933 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Mark Lobodzinski ad386845 2023-05-24T11:14:12 Tests: Add Empires and Puzzles trace Test: angle_trace_tests --gtest_filter=TraceTest.empires_and_puzzles Bug: b/283500712 Change-Id: I3b4ed61ebe8948319ca74e79cb74053b554b0009 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4551449 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 24504dd1 2023-05-23T20:27:49 Tests: Add Kentucky Route Zero trace Test: angle_trace_tests --gtest_filter="*kentucky_route_zero*" Bug: b/284061674 Change-Id: Iab42008bfa3604e306628e90abc04b7ceb6fd4bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4559458 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 33e38862 2023-05-24T00:00:00 Vulkan: Limit clampFragDepth workaround to affected drivers Bug: angleproject:3970 Change-Id: I708591d86b8f2cb10d0cbdc7c14518fda45ac626 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4562134 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 934a25bc 2023-05-22T00:00:00 Vulkan: Implement EXT_depth_clamp Bug: angleproject:8047 Change-Id: I73244f5dcd6eeeb1889214ee3a611e4ecabbfe7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4558744 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop fb32aef5 2023-05-21T20:49:06 Tests: Add Galaxy S23 deqp expectations Expectations for the following tests: angle_deqp_gles2_tests angle_deqp_gles3_tests angle_deqp_gles31_tests angle_deqp_khr_gles2_tests angle_deqp_khr_gles3_tests angle_deqp_khr_gles31_tests angle_deqp_khr_gles32_tests Bug: b/281128706 Bug: angleproject:8157 Change-Id: If69361db7b4c6b739a84d158320ea86eda2d14f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4559448 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Hailin Zhang c74dae15 2023-05-12T12:45:44 Vulkan: patch vertex attrib and shader input mismatch. opengl es spec didn't specified vertex attirb input data type mismatch with vertex input data type. For this change, it will change the attrib format to match the vertex input format. while keep the same data size. (expect normalized data) Bug: b/280241844 Change-Id: Ib28a18fe495b779d5bb0e8e43887bd36b0037dba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528299 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Roman Lavrov 6d936bef 2023-05-18T11:51:05 Restore sync_restricted_traces_to_cipd upload progress bar https://crrev.com/c/4538368 suppressed stdout for all cipd invocations to reduce noise. This restores stdout piping to the calling process for uploads only, as cipd shows a useful progress bar during uploads. Bug: angleproject:8137 Change-Id: Ida7e43bc55af4dda1be768c65784fe3bc0656955 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545407 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Brandon Schade 80e60bbc 2023-05-09T12:46:18 Validate non-precision qualifiers in GLSL shaders Add validation to reject non-precision qualifiers on struct members in GLSL shaders, as per the GLSL ES 3.2 specification, section 4.1.8: Structures Tests: KHR-GLES3*.shaders.negative.non_precision_qualifiers_in_struct_members Bug: angleproject:8045 Change-Id: I863ae631b09ff773a826d542f387072491489699 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4534656 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Mark Lobodzinski 9e47cbd3 2023-05-18T14:40:37 Capture/Replay: Rework trace EGLDisplay handling Refactor the trace-replay EGLDisplay handling to allow initializing the global EGLDisplay handle in the InitializeReplay4() body. This included adding support for eglGetCurrentDisplay() to the EGL-on- WGL shim. Test: angle_trace_tests --gtest_filter=infinity_ops Bug: b/282725258 Change-Id: I2319fd9a35f8fb9c0a7f10547ca39f49ce402b8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4546267 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Geoff Lang 6d3e5870 2023-05-17T16:42:47 Metal: Disable Metal support on NVIDIA GPUs NVIDIA GPUs are in a very small number of Macs and we don't have have adequate test coverage to properly support them. Add the disable_metal_on_nvidia feature to control support for NVIDIA at runtime. Also factor the support of GPU family 1 into a feature. Bug: angleproject:8170 Change-Id: I160036d710cc9e278eb77e351a483b9f5b69e8ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544659 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Amirali Abdolrashidi ac4649ef 2023-05-17T12:50:59 Vulkan: Update last CRC check for pipeline cache * In GetAndDecompressPipelineCacheVk(), a mismatch in the final CRC check before decompression is now fatal. If the expected CRC is non-zero, the cache header data will be logged before crashing. The only exception is when the expected CRC is 0, in which case there will only be a warning about the CRC mismatch. Bug: b/246683126 Change-Id: Ic2eb882bcc692b2a8f026cc90a0185a29d48f382 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545957 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 42bd78b2 2023-05-23T14:21:14 Remove assertion in SyncEGL::onDestroy that the sync is valid When a egl::Sync objecct is created in egl::Display, it's wrapped in the RAII object angle::UniqueObjectPointer which calls onDestroy and the destructor on the sync when leaving scope due to an error. If the SyncEGL fails to initialize, it will still have onDestroy called. This patch makes sure that we don't assert in that case. Bug: chromium:1434602 Change-Id: I501a0173328e4d9d01474d1084c64ef178896f17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4556167 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 7abc5248 2023-05-19T00:00:00 Vulkan: Enable VK_EXT_depth_clamp_zero_one Replaced the 'depth_clamping' workaround with the dedicated extension or explicit fragment depth clamping. Fixed: angleproject:3970 Bug: angleproject:8077 Change-Id: Ia7666fcb3e0e949922c13a3fd11b818cbc5a8e26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545084 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3f633521 2023-05-18T21:27:00 Vulkan: Fix handling inactive unnamed I/O blocks in SPIR-V When an unnamed I/O block already exists, later inactive unnamed I/O blocks were not being added to the list of inactive varyings, causing the SPIR-V transformer to trip up Bug: b/283017896 Change-Id: Ida5b38e1a03da2b336d5904caa44f53dbdfb8aa3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544590 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Cody Northrop c04ad8e0 2023-05-17T10:59:36 Tests: Add Honkai: Star Rail trace Test: angle_trace_tests --gtest_filter="*honkai_star_rail*" Bug: b/283129009 Change-Id: I4c41345b83b7ea2429bccb8a814994bcb13a7486 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545308 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Brian Ho ea0b1b7b 2023-05-19T15:26:50 Selectively advertise base vertex and instance fns On newer Mali GPUs (Valhall), the glDraw*BaseVertex* implementations seem to be buggy and cause noticable artifacts. Chrome uses the presence of baseVertexBaseInstanceANGLE and baseInstanceEXT extensions to determine whether it can draw with a base vertex or to fallback to manually offsetting the vbo. This CL disables these extensions on Mali Valhall so that Chrome takes the fallback path instead to fix the visual artifacts. Bug: b/280931795 Change-Id: Ic27e37465283ca3338747b53aa7888c7eba4b7b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4549682 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Roman Lavrov f382b244 2023-05-19T14:28:26 Add ci/linux-trace disabling logic to ANGLE script Currently disabled by this line in chromium/tools/build repo: https://crsrc.org/b/recipes/recipe_modules/angle/api.py;drc=e768c9b9c2a9b34346f9c009341761a034df7a00;l=91 I will remove that logic after this CL lands. This way we can decide whether to run this test inside ANGLE repo. Bug: angleproject:6085 Change-Id: I8efafb11149cda1fd47a5e9a95612e521823493a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4549681 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Chris Dalton 7d4c6d1d 2023-05-09T12:19:54 Allow glDelete* while PLS is active Banning glDelete* is extremely dangerous. It will almost definitely cause memory leaks in client code, and it makes JS garbage collection needlessly complex. Instead, specify that PLS is implicity deactivated if the client deletes anything that is attached to the current draw framebuffer during a PLS rendering pass. Bug: chromium:1421437 Change-Id: I3a18ee6b5d5567431e6fa3eccea58cb049845502 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4521436 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Shahbaz Youssefi b76166d0 2023-05-18T09:57:25 Vulkan: Separate image and sampler 2D view of 3D features The sampler feature is used to determine if EGL_KHR_gl_texture_3D_image can be exposed. The image feature is used to support base GLES 3.1 storage images. Bug: b/274478146 Change-Id: Ifb283633078ace7ee65f8aafe756d0a02b727bd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545005 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 80dd54f9 2023-05-17T22:16:59 Vulkan: Enable VK_EXT_image_2d_view_of_3d and set flag Based on a change by Yiwei Zhang <zzyiwei@chromium.org> Enabling the extension was missed from https://chromium-review.googlesource.com/c/angle/angle/+/3648586, and some implementations do rely on the feature enablement (e.g. RADV). This also fixes the VVL violations on satisfied implementations. Additionally, the VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT flag is always set on 3D images when this extension is supported; it is needed for both sampled and storage images, not just storage images. Bug: b/274478146 Change-Id: Ibc210275e2d39ac0c54d1ae4c2451a5402360972 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544762 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Chris Dalton 45f91a8c 2023-05-08T13:11:44 Deinitialize PLS planes when their texture is deleted The spec originally called for PLS planes to be converted to memoryless when their texture was deleted, but this is not compatible with WebGL, which does not support memoryless planes. Change the behavior to deinitialize them instead. This change requires the addition of a new observer message, angle::SubjectMessage::TextureIDDeleted, which PLS uses to deinitialize a plane when the app deletes its texture. Bug: chromium:1421437 Change-Id: I58fd91003747160f0a1abc1a8a7a87668890ba1f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4518565 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Mark Lobodzinski 8fdb164b 2023-05-11T10:03:57 Capture/Replay: Get and use actual EGLDisplay in trace ANGLE traces were using ANGLE_NO_DISPLAY for EGLDisplay args in traces. After the EGLSyncMap was added this caused error messages in Android and Linux playback of some traces. Added a global EGLDisplay to traces and initialized it with the proper value. Test: angle_trace_tests --gtest_filter=infinity_ops Bug: b/282725258 Change-Id: I1e6522cd4fdfee136c1e296805dac9d9f71256f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4534096 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Geoff Lang bcbf23c5 2023-05-16T11:08:13 When loading SwiftShader on Mac, look in "Libraries" If ANGLE is statically linked into Chrome, SwiftShader's dylibs will be in the Libraries folder. Search in both the current module directory and the Libraries folder to handle both cases. Bug: chromium:1445969 Change-Id: I1d6ca3bb7b77fe0c23cb932c95f22f1754eaf9e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4538366 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop b795a6a8 2023-05-17T10:07:58 FrameCapture: Disable GL_EXT_texture_mirror_clamp_to_edge This extension isn't supported on many drivers. Disabling the extension allows for a more portable trace. Test: Honkai: Star Rail trace Bug: angleproject:8168 Change-Id: I840f07219b8064a232c2927d3c89aeca87f173f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545307 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Mike Schuchardt <mikes@lunarg.com>
Yuxin Hu c1fc512b 2023-05-16T17:14:23 Manual roll VK-GL-CTS from e3b9db9ad121 to 876d164bd88a (32 revisions) Manual roll requested by yuxinhu@google.com * Skipped the following tests: dEQP-EGL.functional.fence_sync.valid.egl_fence_persistent_buffer KHR-GLES31.core.texture_buffer.texture_buffer_errors https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/e3b9db9ad121..876d164bd88a 2023-05-16 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-cts-4.6.3 into vk-gl-cts/main 2023-05-16 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-05-15 piotr.byszewski@mobica.com Fix vkExtensionFunctions.inl 2023-05-15 javed@igalia.com Add coverage for specific synchronization2 access flags 2023-05-15 cturner@igalia.com Add VPS handling for h265 tests 2023-05-15 ziga@lunarg.com Fix api version check in entry_points test 2023-05-15 matt.coster@imgtec.com VK_FORMAT_FEATURE_TRANSFER_{SRC,DST}_BIT are implied on Vulkan 1.0 without VK_KHR_maintenance1 2023-05-15 ziga@lunarg.com Set missing dynamic states in null_color_blend_att_ptr tests 2023-05-15 scerveau@igalia.com vulkan-video: update ESExtractor to v0.3.3 2023-05-15 cturner@igalia.com Add extra checks for FENV_ACCESS support on 32-bit ARM 2023-05-15 rgarcia@igalia.com Test large values when converting from float to 64-bit ints 2023-05-15 ziga@lunarg.com Enable graphicsPipelineLibrary feature when libraries are used 2023-05-15 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkan-cts-1.3.6 into vk-gl-cts/main 2023-05-15 alexander.galazin@imgtec.com Notice of withdrawal of Vulkan CTS 1.3.2.x 2023-05-08 rgarcia@igalia.com Test multi-value sample mask with dynamic rasterization samples 2023-05-08 rgarcia@igalia.com Test GPL with null VkPipelineRenderingCreateInfo contents 2023-05-08 rgarcia@igalia.com Test EDS3 null pipeline state pointers 2023-05-05 ziga@lunarg.com Add tests for pipeline robustness with cache 2023-05-05 debarshid@google.com Implement Sync Tests between CPU and GPU 2023-05-05 chrisglover@google.com Add tests for EXT_gl_colorspace_bt2020 2023-05-05 cturner@igalia.com Fix VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04849 2023-05-05 cturner@igalia.com Fix VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07163 validation error 2023-05-05 cturner@igalia.com Fix memory corruption during validation for decode.h264_interleaving 2023-05-05 marcin.zajac@mobica.com fetch_sources.py for cygwin and mingw 2023-05-05 gleese@broadcom.com Fix VK/VK-SC generated file inclusion 2023-05-05 gleese@broadcom.com Remove unused VKUTIL_LIBS 2023-05-05 rgarcia@igalia.com Test read-only depth/stencil attachment with VRS 2023-05-05 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkan-cts-1.3.5 into vk-gl-cts/main 2023-05-04 rgarcia@igalia.com Test some EDS3 line rasterization parameters with mesh shaders 2023-05-04 rgarcia@igalia.com Test dynamic blend equation with dual source blending 2023-05-03 piotr.byszewski@mobica.com Update vulkan-docs to current version 2023-05-03 cturner@igalia.com Update removeTags in fetch_sources.py for glslang 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,yuxinhu@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://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:8166 Bug: angleproject:8167 Bug: angleproject:8169 Change-Id: I0fb573b382e63bf4820a083759e57647f6159763 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544088 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Amirali Abdolrashidi cda716b3 2023-05-12T15:43:35 Expand numChunks to 16 bits in cache header On some devices, the number of chunks for the pipeline cache header might exceed the 8-bit limit. * numChunks and chunkIndex are expanded to 16 bits. * Padding added for the alignment of CacheDataHeader. * Updated the assert checks for numChunks and chunkIndex. Bug: b/246683126 Change-Id: I40a4224e845dc5bc6e415ec5f15b16f60f7923af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528541 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 8539177c 2023-05-12T15:27:03 Vulkan: Change pipeline cache header into class Currently the pipeline cache header is represented by a single value of type uint64_t. This prevents us from expanding the header if needed, for example if there is a need to increase the size of any of the data already included, such as numChunks, or add new data to the header. * Added the class CacheDataHeader to RendererVk.cpp, which is comprised of various elements of fixed size. * Replaced the uint64_t with CacheDataHeader. memcpy() is used for data transfer. * The order of the values is based on LSB, similar to the order in the original uint64_t. * Removed kBlobHeaderSize, replaced with sizeof(CacheDataHeader). * In GetAndDecompressPipelineCacheVk(), replaced the assert for chunk index 0 with a warning regarding unexpected values and the function returning without success. The assert was removed since in the case of expanding the chunk index beyond 8 bits, a non-zero value could be decoded. * numChunks and uncompressed data size are also checked to make sure they are non-zero before continuing the decompression. Otherwise, the function would return with no success. Bug: b/246683126 Change-Id: I4caaaef28c3e9ab2a7ca22f89962c11705577be5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528540 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Chris Dalton 7aadc962 2023-05-05T19:28:17 Ban transform feedback and blend extensions with PLS Transform feedback can lead to render pass breaks in the Vulkan backend. EXT_blend_func_extended may restrict the number of draw buffers depending on API state, which can invalidate a PLS implementation. KHR_blend_equation_advanced does not allow multiple draw buffers, which is required by some PLS implementations. Bug: angleproject:7279 Change-Id: Id89f0e485ee65f55d802b121018f13b0028d8029 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4510716 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cody Northrop ec308b35 2023-05-15T15:03:10 Vulkan: Add feature to limit sample count to 2 This CL adds a feature called `limitSampleCountTo2`. Using it will have the Vulkan backend limit max samples to 2. Why 2? That's the minimum required in Vulkan to multisample without error. Here's an example validation error: vkCmdResolveImage: srcImage sample count is VK_SAMPLE_COUNT_1_BIT. The Vulkan spec states: srcImage must have a sample count equal to any valid sample count value other than VK_SAMPLE_COUNT_1_BIT. https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdResolveImage-srcImage-00257 Using a limit as opposed to forcing a value allows non-multisampling (sample count of 1) to continue working. To see how tests fare when the feature is set, see the following test results that force the value on: https://chromium-review.googlesource.com/c/angle/angle/+/4534098/4 Test: adb shell setprop debug.angle.feature_overrides_enabled limitSampleCountTo2 Bug: b/279498079 Bug: angleproject:8162 Change-Id: I1df2822709151e6084c32055b5aff444e0b10db5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4518562 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Greg Schlomoff <gregschlom@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jason Macnak 5ab2fa96 2023-05-12T08:38:19 Vulkan: Move texture QFOTs to syncState() ... (and getAttachmentRenderTarget() which is syncState()-like for deferred clear) so that QFOTs are not actually scheduled until first use. SurfaceFlinger optimistically creates EGL images and textures for AHBs in case it does need them in the future. However, the images and textures may go unused. Prior to this change, ANGLE would create pending QFOT barriers while importing AHBs into EGL images and GL textures. However, SurfaceFlinger may not be doing any "real work" (other than repeatedly creating and destroying EGL images and GL textures) which would result in the command buffers containing the QFOTs being flushed. This can result in a large build up of unreleased memory (as the VkDeviceMemory would still be kept alive by the reference from the unflushed QFOT command buffer) and lead to the low memory killer nuking processes. Bug: b/282075554 Test: cts -m CtsOpenGLTestCases -t android.opengl.cts.GLSurfaceViewTest Test: adb shell dumpsys SurfaceFlinger Test: angle_end2end_tests --gtest_filter=ImageTestES3.AHBImportReleaseStress/ES3_Vulkan Change-Id: I7776abb2c6f834e96aa3926c26e77c53352ee561 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4527437 Commit-Queue: Jason Macnak <natsu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 10ac4803 2023-05-16T11:49:01 sync_restricted_traces_to_cipd checks for extra files Do not allow files outside of the expected ones (TraceFiles in json) * Ran this check on existing traces: we have a few extra cpp files in goddess_of_victory_nikke, lilys_garden Ask for confirmation before uploading (--upload to bypass) Other cleanup (threading instead of multiprocessing, much less noisy logging etc) Upload is no longer done in parallel. This might mean slower upload of large batches (batch upgrade in experimental?) but would make failures easier to understand. Bug: angleproject:8137 Change-Id: I71530b886541e8b1afe9d436bf300006afb06bd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4538368 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Jean-François Geyelin c2c8b062 2023-05-11T22:38:48 [Risc-V] Fix definition of kAndroidOpenGLTlsSlot. On Risc-V, ANGLE was using a TLS offset of 3. This worked... sometimes! On Risc-V, the android OpenGL TLS slot is supposed to be -5, as per tls_defines.h. Tested by running cuttlefish with Swiftshader + ANGLE on Risc-V Bug: b/273278430 Change-Id: Ib32f7dbcc158085b75f4befc277a03229ff87152 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4521034 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Jean-François Geyelin <jif@chromium.org>
Amirali Abdolrashidi 6f959e07 2023-04-28T16:00:11 Vulkan: Add non-device memory option for VMA image * Updated the required flags for allocateAndBindMemory() to no longer include VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, though still preferred. This allows VMA to allocate from another memory type if the device is out of memory. * Added a debug message to indicate when allocated memory for VMA image does not have all the preferred property flags. * Also added a warning in the case of memory allocation fallback. * Added a perf counter to keep track of image allocation fallbacks from the device memory. * deviceMemoryImageAllocationFallbacks * Added a test to make sure that VMA images can still be allocated from other memory types even if device memory is unavailable. * VulkanImageTest.AllocateVMAImageWhenDeviceOOM Bug: b/280304441 Change-Id: Ic452c18ded25345cdb7e271442372b99aede045e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4493483 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 560ba1c6 2023-05-13T01:42:21 Revert "Suppress VUID-vkCmdDrawIndexed-None-0784x" This reverts commit aa6291aa43aa34ed5eb68c6b7faaba94ce08ef74. Reason for revert: The roller was successful. The issue seems to have been fixed. Original change's description: > Suppress VUID-vkCmdDrawIndexed-None-0784x > > * Suppressed the following VVLs > * VUID-vkCmdDrawIndexed-None-07840 > * VUID-vkCmdDrawIndexed-None-07841 > * VUID-vkCmdDrawIndexed-None-07843 > * VUID-vkCmdDrawIndexed-None-07844 > * VUID-vkCmdDrawIndexed-None-07845 > * VUID-vkCmdDrawIndexed-None-07847 > * VUID-vkCmdDrawIndexed-None-07848 > > Bug: angleproject:8159 > Change-Id: Id516d0a8e677b00b3f46a456d07386c5fd91d6dc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514440 > Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> > Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8159 Change-Id: I00d45397cf72facfc60674563f95e81df80cc7c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4529339 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Amirali Abdolrashidi 17dbf435 2023-05-13T01:11:19 Revert "Suppress more of VUID-vkCmdDraw-None-0784x" This reverts commit c441206103b14f68fc5cfa9434f4058429a714dd. Reason for revert: The roller was successful. The issue seems to have been fixed. Original change's description: > Suppress more of VUID-vkCmdDraw-None-0784x > > * Suppressed the following VVLs > * VUID-vkCmdDrawIndexed-None-07840 > * VUID-vkCmdDrawIndexed-None-07841 > * VUID-vkCmdDrawIndexed-None-07843 > * VUID-vkCmdDrawIndexed-None-07847 > > Bug: angleproject:8151 > Bug: angleproject:8159 > Change-Id: I7fe36cfa34b8157af0be7f0c35779185a6b341aa > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514442 > Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> > Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:8151 Bug: angleproject:8159 Change-Id: I41082df93a55c4eec46ad7d0d048a8159472a7d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528542 Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Jason Macnak c94ee61c 2023-05-11T16:40:09 Tests: Update AHB test to skip if format/usage combo not supported Bug: b/282075554 Test: angle_end2end_tests --gtest_filter=ImageTestES3.*/ES3_Vulkan on Cuttlefish Change-Id: Icd8a9ad71d5b59d5754f4c32f3c4dffb32bf845c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4527436 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop ad01f53c 2023-05-11T09:44:13 Vulkan: Add additional nullptr check in ShouldReportDebugMessage Some platforms are using the callback for non-VVL messages, and we just need an additional nullptr check for pMessageIdName when deciding whether to print it. Test: Trace tests on S23 with VVL enabled Bug: angleproject:8163 Change-Id: Id76903e01be859f6ae7a6d253ed32ae54cd682ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4522466 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov b526112d 2023-05-12T11:31:06 Tests: include system EGL configs for ES3.1 and ES3.2 tests These are enabled with angle_test_enable_system_egl=true Example: [ OK ] ProgramPipelineTest32.CreateProgramWithTransformFeedbackVarying/ES3_2_EGL (280 ms) Bug: b/278585075 Change-Id: Ic991b3bc6fa36a6856b28fcfc7a433ac183a2c4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4526358 Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov 25def1a0 2023-05-11T17:52:09 Android test runner expects 'gtest' and marks test list gtest is passed as the first argument when running as out/Android/angle_trace_tests, previously skipped via argv[2:] --list-tests usually includes "Tests list:" / "End tests list." markers around the list - which is how GetTestsFromOutput finds them, but we didn't include them in stdout. There is some other noise in stdout on Android so instead of printing full stdout just add the markers back Bug: b/276474703 Change-Id: I20ba59eb25e543b005974674b0f3688cd767b1aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4519232 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Geoff Lang b1395bcb 2023-05-09T12:34:55 GL: Disable EXT_clip_control on Mali-G72 and G76. Querying the clip control state from the driver when sychronizing external contexts generates driver errors. Simply disable this extension in this configuration for now. Chrome is currently not using it for rasterization. This issue was noticed on specific Huawei devices in the wild. It hasn't been observed on other OEMs. Bug: chromium:1434317 Change-Id: I88d9bff1933274f61020b75e68aee9c94b0b684a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4518062 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Colin Blundell <blundell@chromium.org>
Brian Sheedy 914d798d 2023-05-10T14:30:15 Dedup Gold properties code Updates ANGLESkiaGoldProperties to use the newer method of providing the repo's root directory instead of completely overriding how the HEAD SHA1 is obtained. There should be no functional change as a result of this. Bug: chromium:1443021 Change-Id: I7464dabf2c31008b119c8f6a8454c6a7f8f9a68f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4521886 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Hailin Zhang 8b9440b6 2023-05-01T15:31:01 Vulkan: add option to control pipeline cache data compression. Bug: b/258207403 Change-Id: I487b1cadbacfa2f7ee889a8f58278307a126a391 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4497248 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Hailin Zhang deab374e 2023-05-09T10:29:21 Vulkan: skip releaseStagedUpdates when not owned this is only a temp quick fix for b/279677207. may introduce rendering issue there are still other multi-thread race issues. the stagedupdates come from defer clears or empty entries. Bug: b/279677207 Change-Id: Idfd21120e5fe916d0d9d205dba2d71695085a5d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4518740 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Scott Violet b0f9c01e 2023-05-01T12:54:10 metal: adds feature that minimizes generated shader differences This adds a feature (enabled by default) that results in generating the same code regardless of whether emulateAlphaToCoverage is enabled or addExplicitBoolCasts. This is done to maximize cache sharing. Bug: chromium:1423136 Change-Id: Ia491f13469c750fc2c45aecf1f93fed53b782dc5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4496254 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Scott Violet <sky@chromium.org>
Cody Northrop 3d455fe4 2023-05-03T15:35:47 Android: Galaxy S23 support This CL: * Adds detection of the device * Adds end2end test support * end2end test expectations for Vulkan backend * Works around driver issue with vkCmdSetLogicOpEXT Test: angle_end2end_tests, angle_trace_tests Bug: b/277717225, b/281128706 Bug: angleproject:8157 Change-Id: If6caa5b2ba0b9d7f94e1be0841bcff2ea1c34d89 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4509693 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Geoff Lang e482d4b2 2023-05-08T17:53:14 Store the temp file name in a std::string instead of stack array It's possible to overflow the tempFile buffer if the temporary file directory is too long. Bug: chromium:1443445 Change-Id: Id6038f54cba2dfb524a5602df99bf775aecb4450 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4515532 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 64680f53 2023-05-05T15:58:21 Scripts: Fix non-root hash check Use run-as to ensure the file can be read by test app. Test: angle_trace_tests on prod device Bug: b/276742336 Change-Id: I006f40396712064ebe6d68e04de17537a8143320 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4509708 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi c4412061 2023-05-08T18:46:10 Suppress more of VUID-vkCmdDraw-None-0784x * Suppressed the following VVLs * VUID-vkCmdDrawIndexed-None-07840 * VUID-vkCmdDrawIndexed-None-07841 * VUID-vkCmdDrawIndexed-None-07843 * VUID-vkCmdDrawIndexed-None-07847 Bug: angleproject:8151 Bug: angleproject:8159 Change-Id: I7fe36cfa34b8157af0be7f0c35779185a6b341aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514442 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi aa6291aa 2023-05-08T15:49:15 Suppress VUID-vkCmdDrawIndexed-None-0784x * Suppressed the following VVLs * VUID-vkCmdDrawIndexed-None-07840 * VUID-vkCmdDrawIndexed-None-07841 * VUID-vkCmdDrawIndexed-None-07843 * VUID-vkCmdDrawIndexed-None-07844 * VUID-vkCmdDrawIndexed-None-07845 * VUID-vkCmdDrawIndexed-None-07847 * VUID-vkCmdDrawIndexed-None-07848 Bug: angleproject:8159 Change-Id: Id516d0a8e677b00b3f46a456d07386c5fd91d6dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514440 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang fbca2b29 2023-05-08T16:19:54 Metal: Build built-in shaders from source on the simulator Compiling the built-in shaders with iphonesimulator sdk generates the same shaders as on iOS which do not work on the simulator. Fall back to simply building them from source on the simulator. Bug: chromium:1385510 Change-Id: If6a3846fd06a4ff12c1e46c31f207e2a7b6c50bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4515521 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 74d1da6c 2023-05-08T11:07:28 Add instruction for trace tests w/multiple devices * Added instruction on running trace tests when more than one device is available through adb. Bug: None Change-Id: I4522311d4ad3517634f9c34b7af8c546bf4665e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4509237 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 9c376a02 2023-03-31T00:00:00 Metal: Implement ANGLE_polygon_mode Bug: angleproject:1791 Change-Id: Iea1e10751ad8e853b4fb209952488211cfa4bac4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4497909 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev c710023d 2023-03-31T00:00:00 D3D11: Implement ANGLE_polygon_mode Bug: angleproject:1791 Change-Id: I17a1ec9222199d4afb2dbcba3d0219f0a37f6a67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4500079 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 7f04dc7d 2023-04-19T15:05:47 Reland: Metal: Embed precompiled default shaders. Compile all builtin shaders to an embedded mtllib to avoid the overhead of compiling them at startup. This reland adds ios simulator precompiled shaders. Bug: chromium:1385510 Change-Id: Ic8585ffe566875e705f2fb00f8e665e8a80797f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4512494 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 255c6738 2023-04-28T21:08:01 Vulkan: Fix flaky linux-asan-test failure with asyncCommandQueue Regression from this commit: Vulkan: Clean up CommandProcessor::queuePresent https://chromium-review.googlesource.com/c/angle/angle/+/4257927 Details: - `CommandProcessor::processTask()` handles `CustomTask::Present`; - It calls `CommandProcessor::present()` that assigns `swapchainStatus->isPending = false`; - `CommandProcessor` thread is suspended for a while...; - `WindowSurfaceVk::destroy()` calls `waitForPresentToBeSubmitted()`; - It sees that `swapchainStatus->isPending == false` and skips waiting; - `WindowSurfaceVk` (and `SwapchainStatus` ) instance is destroyed; - `CommandProcessor` thread resumes and checks `task->getSwapchainStatus()->lastPresentResult` - ASAN failure. The 460 bytes offset is `SwapchainStatus::lastPresentResult` member inside `WindowSurfaceVk` instance. Test that failed: ImageTest.ValidationGLEGLImageExternal/ES2_Vulkan_SwiftShader_AsyncCommandQueue ==27108==ERROR: AddressSanitizer: heap-use-after-free on address 0x61e0000eea4c at pc 0x7f98434e0e10 bp 0x7f98363c0a70 sp 0x7f98363c0a68 READ of size 4 at 0x61e0000eea4c thread T29 #0 0x7f98434e0e0f in rx::vk::CommandProcessor::processTask(rx::vk::CommandProcessorTask*) src/libANGLE/renderer/vulkan/CommandProcessor.cpp:664:59 0x61e0000eea4c is located 460 bytes inside of 2880-byte region [0x61e0000ee880,0x61e0000ef3c0) freed by thread T0 here: #0 0x5651c72a563d in operator delete(void*) /b/s/w/ir/cache/builder/src/third_party/llvm/compiler-rt/lib/asan/asan_new_delete.cpp:152:3 #1 0x7f9843f4c8c9 in SafeDelete<rx::SurfaceImpl> src/common/angleutils.h:285:5 previously allocated by thread T0 here: #0 0x5651c72a4ddd in operator new(unsigned long) /b/s/w/ir/cache/builder/src/third_party/llvm/compiler-rt/lib/asan/asan_new_delete.cpp:95:3 #1 0x7f9843a38599 in rx::DisplayVkXcb::createWindowSurfaceVk(egl::SurfaceState const&, long) src/libANGLE/renderer/vulkan/linux/xcb/DisplayVkXcb.cpp:99:12 Bug: b/269524271 Change-Id: Ie70bc9e2b89267653ddb6b3a30c1a67e22864f26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4491743 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 54532241 2023-01-19T15:45:29 Vulkan: Remove mUse related code from SyncHelperNativeFence Since adding `rx::vk::ExternalFence` class, waiting on `mUse` is almost the same as waiting directly on `mExternalFence`. Because `mUse` is no longer required to release the fence and to reduce code complexity, `mUse` related code paths were removed. Since `SyncHelperNativeFence` no longer using `mUse` no need to inherit from `SyncHelper`. Added `SyncHelperInterface` abstract base instead. Bug: angleproject:8115 Change-Id: I2aabbc905d833f8bf6db36b3be356d6db40349d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392880 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Mark Lobodzinski 577b6c8d 2023-05-05T10:49:04 Tests: Add Street Fighter IV CE trace Test: angle_trace_tests --gtest_filter=TraceTest.street_fighter_iv_ce Bug: b/281007960 Change-Id: I81da4b005c50e915090f342d50362e4f8f0ac1f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4508393 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Charlie Lao 76fa3806 2023-05-04T10:19:35 Vulkan: Expand BufferOnly path for VertexArray binding change VertexArrayVk has a fast code path for attribute change where the only change is buffer (i.e, no format or relativeOffset change). It will pass in bufferOnly to syncDirtyAttrib() call and will avoid invalidate graphics pipeline. This CL expands DIRTY_BIT_BINDING_n change and will also try to detect the bufferOnly case. This CL and crrev.com/c/4507978 together seeing Gfxbench driver overhead score improves 1.48% (from average 6804 before CLs to 6905 after CLs) on pixel 7 pro. Bug: b/277644512 Change-Id: I71da1b886bb26ba2629b83af3aeaba4d45c3d3c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4504919 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Charlie Lao <cclao@google.com>
Charlie Lao 086b6c20 2023-05-04T15:55:31 Vulkan: Simplify TransformFeedback buffer tracking Right now the buffers that used by transform feedback is tracked by mCurrentTransformFeedbackBuffers, which is angle::FlatUnorderedSet. With the QueueSerial numbers, this can be much simplified. This CL removes mCurrentTransformFeedbackBuffers. It adds a new QueueSerial variable called mCurrentTransformFeedbackQueueSerial, and is inavlid if no active transform feedback. Then check if a buffer is used by transform feedback is as simple as check if it is written by mCurrentTransformFeedbackQueueSerial. Since buffers are already tracked by queue serial, so there is no new tracking needed. It is simply a check if the buffer contains mCurrentTransformFeedbackQueueSerial or not. Bug: b/280889890 Change-Id: I54bdc4a0cfc7194a12d2aa0abdc67a3211949024 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4507978 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov 961788fd 2023-05-05T11:35:38 Capture/Replay: reorganize trace-related gni Move trace-related code from gni/angle.gni to src/tests/angle_traces.gni Rename template angle_trace_library to angle_trace_libs as the idea is for it to build multiple libs. Name outside-of-apk lib group ${target_name}__unpacked_libs which is more consistent with how targets are usually named in gn, and makes the dependency explicitly tied to template instantiation. Bug: b/276474703 Change-Id: I316f2a549063b8ebae177f4ffc0d4a8de1942384 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4508387 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Igor Nazarov 903d9fdf 2023-01-19T15:37:45 Vulkan: Implement ExternalFence for use in SyncHelperNativeFence `ExternalFence` allows concurrent usage in `CommandQueue` and `SyncHelperNativeFence` classes eliminating need of additional `vkQueueSubmit()` call. Waiting in `CommandQueue` on `QueueSerial` or `ResourceUse` will ensure corresponding state of the native FD (because `CommandQueue` will wait on the same FD instead of some other fence). After this change there will be only single `vkQueueSubmit()` call from the `SyncHelperNativeFence::initializeWithFd()` method. This CL and the follow-up is sufficient to fix the bugs below. Bug: angleproject:8115 Bug: angleproject:8117 Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_ExternalFenceWaitVVLBug* Change-Id: Ic562ecc71a95203454a1dc438589a13bcf3bff7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392879 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov e71207de 2023-01-18T13:39:58 Vulkan: Fixes in rx::vk::SyncHelperNativeFence class Issues: - Resource::mUse was not updated in initializeWithFd() method, making code paths, that checking for "mUse" a dead-code. - mFenceWithFd may be potentially destroyed while still in use. (Because mUse is not valid). - missing checkCompletedCommands() in getStatus(), that may cause infinite loop in the application. Bug: angleproject:8115 Change-Id: I857d785f564b809eb83417fe5f212f7d0f12c5b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392878 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Roman Lavrov 7d6d18e4 2023-05-05T09:48:19 Improve adb root handling If `id -u` returns 0, adbd is already running as root (convenient fast path for local dev and seems we have that on bots too) If `which su` returns something, we should be able to get root. If "su" is there but we can't get adb root, raise. Go back to up to 10 seconds wait. On my local device adb root is routinely taking ~4 seconds. adb root restarts adbd on the device so it's expected not to be fast. Bug: b/276742336 Change-Id: If720b9176ba18ebd9734c0b8288eabc5970b5ef8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4508392 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Igor Nazarov 72f9add4 2023-05-03T15:30:33 Vulkan: Initialize mLastSubmittedQueueSerial to valid value Currently, ContextVk::mLastFlushedQueueSerial and ContextVk::mLastSubmittedQueueSerial are invalid after Context initialization. Although, invalid QueueSerial will always test as submitted and finished, this produce a edge case. In case of SyncHelper::mUse, we can not longer assert that mUse.valid() after submitSyncIfDeferred() call, because invalid mUse is now a valid case... This CL initializes both members to valid value, that will also always test as submitted and finished. This removes the edge case, and allow using assert in SyncHelper to check if everything works as expected. Bug: b/277644512 Change-Id: I6be71596ab7dca1026764756fba7b21b81524413 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4503485 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Roman Lavrov 3ad1d702 2023-05-04T15:57:43 angle_trace_tests_android_binaries: test -> group We don't need it to be a test to begin with. But I looked into it because test with use_raw_android_executable=True makes things really complicated due to the way this is implemented upstream: ''' this __dist target here https://crsrc.org/c/testing/test.gni;drc=acb6ab509901650450fc387c0d9f09eb6f3f3248;l=265 which uses create_native_executable_dist which copies files according to the list of libs: https://crsrc.org/c/build/config/android/rules.gni;drc=a8c26a11f6cf763a5e81b2bced40584a678b9b8a;l=94 which is actually generated not at build time but by gn gen (also called when editing gn args) and so the inputs are not the libs themselves but this file which only contains a list of file names so when libs change there is no change to the inputs of this rule.. so it doesn't get invoked and the copy doesn't happen ''' One caveat is we need to produce a list of .so libs as a data dependency for them to be picked up by isolate Bug: b/276474703 Change-Id: I375a5be8499f13311654244036e36c60d945c363 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4507534 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Igor Nazarov e24f4519 2023-01-19T02:30:39 Vulkan: Add externalFence into submitCommands() Currently one-off fence in the `queueSubmitOneOff()` is used only in `SyncHelperNativeFence::initializeWithFd()` to submit external fence. Other `queueSubmitOneOff()` calls may use `QueueSerial` instead of a fence. Providing `fence` into `queueSubmitOneOff()` prevents tracking that submission with `QueueSerial`. Therefore using `mUse` to collecting `mFenceWithFd` as garbage will not work as intended. This CL removes `fence` from `queueSubmitOneOff()` and adds optional `externalFence` into `submitCommands()` instead. Providing `externalFence` will cause additional `vkQueueSubmit()` call: - first submission will submit everything as usual except using the `externalFence`. - second, will only submit internal `CommandQueue` fence for `QueueSerial` tracking. As the result of this CL, call to `initializeWithFd()` will always produce two (2) `vkQueueSubmit()` calls. Previously it may be one (1) or two (2) submissions. Future CL will reduce submission count to one (1). If add additional submission into `queueSubmitOneOff()` instead of `submitCommands()`, then maximum number of submissions will be three (3). Bug: angleproject:8117 Change-Id: I6f1ec12682aaab71bfc871e665fec2659df96b26 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392877 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Cody Northrop dd7eb1d8 2023-05-04T14:07:44 Scripts: Fix non-root support in android_helper.py Test: angle_trace_tests on production device Bug: b/276742336 Change-Id: I7c1f33adb37d8109540c70ac402e43462c046cec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4504920 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop d925c5c9 2023-05-04T16:16:11 Revert "Metal: Embed precompiled default shaders." This reverts commit 9f6c9f6630b63f541f5fd875aef87ce2a26fd618. Reason for revert: iOS Metal tests broken downstream: https://ci.chromium.org/ui/p/chromium/builders/ci/ios-blink-dbg-fyi/4972/overview Original change's description: > Metal: Embed precompiled default shaders. > > Compile all builtin shaders to an embedded mtllib to avoid the overhead > of compiling them at startup. > > Bug: chromium:1385510 > Change-Id: I1c31ae0088babae01a9e42d63b3c2c30b65f4476 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4450126 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Quyen Le <lehoangquyen@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> Bug: angleproject:8152 Bug: chromium:1385510, chromium:1441754 Change-Id: I7f253f7aa14117b93d1e09ed61db0c4563fc9c3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4508064 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov e350330d 2023-05-02T09:57:42 Fix EGLContextCompatibilityTest registration Before this CL these tests are not registered at all. Avoid test name duplicates by skipping configs. Bug: angleproject:8088 Change-Id: I0d9b8260bd2ed76bda7fb46e6a131c4d2624c55f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492920 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mark Lobodzinski c687078a 2023-05-01T16:45:19 FrameCapture: Add GLES1 case for BlendFunc state init/reset A recent frame capture change added state init/reset for glBlendFunc/glBlendFuncSeparate calls and combined them to avoid complexity, but this caused crashes in GLES1 native trace playback. This CL separates handling of the two calls. Test: angle_trace_tests --gtest_filter=TraceTest.street_fighter_iv_ce Bug: b/280329971 Change-Id: I34d674e2fc051f5af70a60a24e5b65c5ce54fd49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4494261 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Peng Huang 55df82e0 2023-05-04T15:23:08 Fix crash in std::stoi() std::stoi() will throw exceptions when the input is invalid, so change to use std::atoi() which doesn't throw exception. Bug: chromium:1401610 Change-Id: I188412363b26286003b5daf311e5725fe4c4d7e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4507533 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Peng Huang <penghuang@chromium.org>
Shahbaz Youssefi 7fd01d03 2023-04-19T00:54:24 Vulkan: Throttle the CPU without holding the global lock CPU throttling goes through CommandQueue and is thread-safe. Performing it in an unlocked tail call allows other unrelated EGL calls to go through. Bug: angleproject:8135 Change-Id: Idb3841be5d8ea8c4b76217f6707be26b28ea39c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4444027 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Roman Lavrov 1ad27152 2023-04-18T12:17:00 Switch angle_trace_tests scripts to android_helper out/Android/angle_trace_tests {args} replaces (cd out/Android; python3 ../../src/tests/run_angle_android_test.py {args}) changes this generated file: % grep angle_android_test_runner out/Android/bin/run_angle_trace_tests args = ['@WrappedPath(../../src/tests/angle_android_test_runner.py)', 'gtest', '--output-directory', '@WrappedPath(.)', '--wrapper-script-args', '--runtime-deps-path', '@WrappedPath(gen.runtime/src/tests/angle_trace_tests__test_runner_script.runtime_deps)', '--suite', 'angle_trace_tests'] android_helper.py is already what we use for running traces on bots (we don't invoke out/Android/angle_trace_tests when IsAndroid()) so this change affects only local runs Keep run_angle_android_test.py to be able to run other suites, but now it takes --suite instead of a positional arg (which is consistent with how scripts are invoked on CI) Bug: chromium:1441148 Change-Id: I5af10e8df7d9a651e0a9d52e47e3bce28d7a931b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4442006 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Justin Novosad fbff065c 2023-05-03T22:19:07 Replace GetResourceFromHashSet with map lookup Function GetResourceFromHashSet had linear time complexity because it was sweeping through the set until a resource with a matching ID was found. This change replaces hash sets with hash maps to get constant time lookup. This solves, among other things, O(N^2) time complexity for rendering scenes containing a large number of surfaces. Function GetResourceFromHashSet was consuming over 50% of all CPU time on the main thread of Chrome's GPU process while running the MotionMark 1.2 Images test. With this change, the benchmark score increases by 70% on an M1 MacBook running a PGO official build of Chrome. Bug: chromium:1435066 Change-Id: I895ac0141a91d324c63adec2c0efb8e030d9675b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4505950 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Justin Novosad <junov@chromium.org> Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Shahbaz Youssefi d6481cdf 2023-04-18T22:36:39 Vulkan: Make eglPrepareSwapBuffersANGLE thread-safe This function now only calls vkAcquireNextImageKHR without any further processing of its results. That is deferred to the following eglSwapBuffers call which does that under the share group lock. The vkAcquireNextImageKHR call, together with the allocation of its related semaphore and fence are protected by a fine-grained lock. mNeedToAcquireNextSwapchainImage is turned atomic to guard against races to call vkAcquireNextImageKHR from multiple contexts. Note that the latter is not currently possible, but will be once calling vkAcquireNextImageKHR is moved to the end of the render pass. Bug: angleproject:6851 Bug: angleproject:8133 Change-Id: If2eeab475b4acf0621fd930c43d9d86a78a9197b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4445495 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi cd171d2e 2023-03-28T14:58:57 Vulkan: Enable async pipeline cache compression * Enabled the feature after adding more header data, including original cache size, chunk index, and CRC. Bug: b/246683126 Change-Id: Idef85f0a6f9e0072fcb800aedb6b720cc88c46b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4378720 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d0ee0197 2023-05-03T13:41:36 WebGL: Limit total size of private data ... not just individual arrays. Bug: chromium:1431761 Change-Id: I721e29aeceeaf12c3f6a67b668abffb8dfbc89b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4503753 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov aa1dc5da 2023-05-03T19:36:04 Revert "Vulkan: Simplify present history logic" This reverts commit 1dee7cad284dda0c7c3ca18c10d8b7764353c7b0. Reason for revert: error: SurfaceVk.cpp:784 (destroy): ! Assert failed in destroy (..\..\src\libANGLE\renderer\vulkan\SurfaceVk.cpp:784): fence.getStatus(device) == VK_SUCCESS Example builds: https://ci.chromium.org/ui/p/angle/builders/try/win-test/13341/overview https://ci.chromium.org/ui/p/angle/builders/try/win-test/13345/overview Original change's description: > Vulkan: Simplify present history logic > > Instead of marking `ImagePresentOperation` as corresponding to an older > swapchain, accumulate all present history in the `mOldSwapchains`. > > Keeping old Swapchain's `ImagePresentOperation` with Fences can lead to > multiple "old swapchains" lists. This may cause situations exceeding > the `kMaxOldSwapchains` limit. > > Keeping items with Fences may help cleanup resources faster, but I think > that it is not worth the code complexity. It also should be safe to > recycle Fences at the same time as the Semaphores (when the first image > is recycled). > > Also this CL may fix bug: > if (mPresentHistory.empty() || mPresentHistory.back().imageIndex == kInvalidImageIndex) > The above condition will always pass when using actual present Fences > (VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT). > > Bug: angleproject:7847 > Change-Id: I39d854b03733dcb976c6bd7eb5f848d0cbece5d6 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4481251 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Bug: angleproject:7847 Change-Id: Icf0cf5b12dd1efa682abebd83699b8d87dc07427 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4502778 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 2fec8ae8 2023-05-02T15:53:29 Vulkan: Handle inactive render pass in draw-based clear For simplicity, if a render pass is open for the current framebuffer but is not active, a new one is started in UtilsVk::clearFramebuffer. A future optimization could decide to reactive the render pass instead, but needs to check for whether that's possible (with a condition similar to what's found in ContextVk::handleDirtyGraphicsRenderPass) Bug: chromium:1440764 Change-Id: I727d4ecefc2bc0a1a9e399b8851c4cc830d20879 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4499765 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 1dee7cad 2023-01-17T18:01:49 Vulkan: Simplify present history logic Instead of marking `ImagePresentOperation` as corresponding to an older swapchain, accumulate all present history in the `mOldSwapchains`. Keeping old Swapchain's `ImagePresentOperation` with Fences can lead to multiple "old swapchains" lists. This may cause situations exceeding the `kMaxOldSwapchains` limit. Keeping items with Fences may help cleanup resources faster, but I think that it is not worth the code complexity. It also should be safe to recycle Fences at the same time as the Semaphores (when the first image is recycled). Also this CL may fix bug: if (mPresentHistory.empty() || mPresentHistory.back().imageIndex == kInvalidImageIndex) The above condition will always pass when using actual present Fences (VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT). Bug: angleproject:7847 Change-Id: I39d854b03733dcb976c6bd7eb5f848d0cbece5d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4481251 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Cody Northrop 533cf9a4 2023-05-02T22:39:09 Vulkan: Suppress new VUID-vkCmdDraw-None VVL errors Test: angle_trace_tests --gtest_filter="*slingshot_test2*" Bug: angleproject:8151 Change-Id: Ifc26a57fe92b57c30f253f5bb491a1ac3932f2f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4500928 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>