src/tests


Log

Author Commit Date CI Message
Shahbaz Youssefi f1e19872 2023-06-12T14:38:23 Vulkan: Fix read pixels with RGBX Typically, the format used for data uploads and downloads as well as the storage format are consistent. That is unfortunately not the case for GL_RGBX8_ANGLE where data uploads are through 3-byte RGB pixels while downloads are through 4-byte RGBX pixels. This change swaps out RGBX for RGBA on the read pixels path. Test credit of Jason Macnak <natsu@google.com> Bug: b/246008627 Test: atest CtsSkQPTestCases Change-Id: I531ebd8318bf4fe5ac09c623068b790a7e301428 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608488 Reviewed-by: Jason Macnak <natsu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Roman Lavrov cf095dfb 2023-06-12T14:27:57 Tests: disable TraceTest.respawnables on native Win & Linux Bug: angleproject:8191 Change-Id: Ie61adc4b15c7db20aa890fad36c079e301f9ffc4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608487 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 21f16cb1 2023-06-09T17:30:38 Disable clang-format on ANGLE features autogen outputs Updates the script to produce reasonably formatted code without clang-format. Autogen files moved to autogen/ sub-directories because clang-format does not support per-file settings ;( This allows to run this codegen very quickly (~50ms on my machine) Bug: angleproject:8193 Change-Id: Ie84282090d574ebb4debe3edcfd82f983f27a5ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4604578 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 43ef50f3 2023-06-08T15:35:17 Android: Assert that CFI is disabled There appears to be a bug in the interaction of CFI and relative vtables. On armv9 it results in a crash with SIGILL when loading traces. Since we can't overwrite the flags used to control this just assert that it is correct in GN args. To avoid the assert, add the following to your GN args: arm_control_flow_integrity = "none" Test: Build and run traces on armv9 devices Bug: b/278955379 Bug: chromium:1441148 Change-Id: I71bf93dca9bd15d6c66ad2a7223d9bbd0c54392e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4602027 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Mark Lobodzinski 72df4283 2023-06-09T10:54:31 Tests: Add Lotsa Slots trace Test: angle_trace_tests --gtest_filter=TraceTest.lotsa_slots Bug: b/286514838 Change-Id: I8756a21596f2a09abff8262b3a9489b638d3522d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4603714 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Roman Lavrov 55f3d3c7 2023-06-09T11:48:00 Tests: disable TraceTest.respawnables on native Bug: angleproject:8191 Change-Id: Ib6dec981830c0a6748e1e1f88dd6727b27592c52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4605334 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov b508f8ab 2023-06-08T10:51:09 Inline remaining _angle_trace_common* vars Used only once after these rules were reorganized. Bug: b/276474703 Change-Id: Ie01f20781ee1ca6f04fd19a9f37769d66561bde8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600614 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 52152933 2023-06-06T15:36:36 Add trace_interface: functions and callbacks for traces Defines the interface between the test suite (or an other TraceLibrary class user) and trace libraries. TraceFunctions defines entry points for calls suite->trace, such as SetupReplay() or SetBinaryDataDir(). TraceCallbacks defines entry points for calls trace->suite, for example for loading .angledata.gz files. These are set up via the exported SetupEntryPoints() call. Functions like SetupReplay etc no longer need to be exported from the trace library. TraceInfo (parsed representation of the trace json) is moved to trace_interface as is. This is convenient for further changes to the fixture that will allow to easily move some of the captured parameters to json. This also moves Decompress functionality (and memory ownership) to test suite entirely, which avoids Decompress/Delete callbacks - the trace just calls LoadBinaryData via TraceCallbacks and TraceLibrary releases the memory either on FinishReplay or in its destructor. This should also take care of the memory leak described in https://crrev.com/c/3858185 Bug: b/286072760 Change-Id: Ibc6f6f64156ad805b1917c8fc41a3b0d2c0d6375 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4594445 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mohan Maiya cfb5d2de 2023-04-06T16:06:35 Remove thread from mActiveThreads during eglTerminate When eglTerminate is called remove the thread from the active thread set if there is no context current. This allows for proper cleanup of invalid EGL objects during certain EGL terminate related end2end tests. Also perform appropriate cleanup in EGLBlobCacheTest test. Bug: angleproject:6723 Bug: angleproject:6798 Test: EGLMultiContextTest.ReuseUnterminatedDisplay* Change-Id: I5a637938d463d6556f594d8bb0cf457efca92355 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4408364 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Ian Elliott 9f734b5e 2023-06-07T10:23:39 Galaxy A23: add end2end expectations for crashing tests Bug: b/285045753 Bug: angleproject:8185 Change-Id: I5b58f8220589a9bc8b366932b6aaa06d1fe84024 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4597750 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott ad09353e 2023-06-07T10:19:35 Android: Galaxy A23 support This CL adds detection of the device, for use in expectations files Bug: b/285045753 Bug: angleproject:8185 Change-Id: Ia68402c4a85fde058b03143eb97607da4679fc7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4597749 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu 1ad4ae4d 2023-06-05T18:45:19 Clean up EGLPreRotation Test EGLPreRotationBlitFramebufferTest are passing on Pixel 6. Skip the failed tests on Pixel4 devices only. Bug: b/172867704 Bug: angleproject:5044 Change-Id: I23744cec20bf7e74272532a00420d1488398cda8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4590228 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Kimmo Kinnunen 16841d62 2023-01-31T11:51:41 Reland "Remove SPIRV_METAL references from .gn and tests" The backend was removed but the references were not. Update ShaderBinaryTest to properly skip tests if shader binaries are unsupported in the current ANGLE backend. Forcibly re-enable building of the Vulkan backend on macOS to keep ANGLE's SwiftShader backend working. Fixed: angleproject:6081 Change-Id: I5e6e47d5fe05b0dd6ec150b6db9fe5d75e580173 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4594582 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 53b5d25f 2023-06-06T12:09:08 Resolve circular dependency android_helper <-> angle_test_util Ran into it causing issues in https://crrev.com/c/4545408 Bug: b/286067106 Change-Id: I9314d1e48b064a46362a65db2c3a92760111f02f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4594440 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 2780cb0b 2023-06-05T00:00:00 Disallow 'depth_unchanged' qualifier for WebGL contexts This qualifier has no equivalents in HLSL or MSL. Bug: angleproject:8046 Change-Id: I1e79c8d725306efb859152b8083d72019c982149 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4595017 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov c37d74a5 2023-06-06T17:07:15 Revert "Remove SPIRV_METAL references from .gn and tests" This reverts commit f7badd3faa8b1b04538ac7b6db833e1398b13498. Reason for revert: disables SwiftShader fallback on Mac Original change's description: > Remove SPIRV_METAL references from .gn and tests > > The backend was removed but the references were not. > > Update ShaderBinaryTest to properly skip tests if shader binaries are > unsupported in the current ANGLE backend. > > Fixed: angleproject:6081 > Change-Id: I54bb4080763fbc0dcc2515e71ccd5df5c536db5b > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4591046 > Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Change-Id: Id41035017830d8b36b29bc4497919c6b01fc3f35 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4595018 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Kimmo Kinnunen f7badd3f 2023-01-31T11:51:41 Remove SPIRV_METAL references from .gn and tests The backend was removed but the references were not. Update ShaderBinaryTest to properly skip tests if shader binaries are unsupported in the current ANGLE backend. Fixed: angleproject:6081 Change-Id: I54bb4080763fbc0dcc2515e71ccd5df5c536db5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4591046 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Stephen White e60f64dd 2023-05-31T17:02:22 D3D11: fix for atomic assigned to an SSBO. When assigning the previous value of an atomic op to an SSBO, we do not want to use the "direct assignment" path, since we can't pass the SSBO expression as an argument to Interlocked*(). Instead, we change the RewriteAtomicFunctionExpressions transform not to defer assignments until HLSL output if the LHS is an SSBO expression, and to do its usual creation of a temporary for the previous value of the atomic op. In OutputHLSL, we skip the direct assignment path if the LHS is an SSBO expression. Bug: angleproject:8182 Change-Id: I0707f4f69757119fe5c8f8e7a12bd26025ec74e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4573827 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Geoff Lang 6e40ce00 2023-06-05T11:47:29 Do not call postResolveLink in Program::deserialize. postResolveLink assumes the program is currently linked, which is not the case in Program::deserialize. It makes calls to set uniforms which is not always expected by the backend. Call postResolveLink after the backend has linked when loading program binaries. Bug: angleproject:6073, angleproject:8183 Change-Id: Idacb81040ea79a7df51917aaa27c77b25df7d5cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4588410 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao e21ecd1b 2023-05-26T14:06:46 Vulkan: Add dirty bit processing for uniform buffer change When app calls glBufferData for the uniform buffer, we may end up reallocate the storage. This will set DIRTY_BIT_UNIFORM_BUFFER_BINDINGS on the context, but the exact uniform block index gets lost along the way. This CL sets mDirtyBits on the program for the corresponding block index and then changed vulkan backend to utilize the program's mDirtyBits and only update the buffer if it is dirty, instead of always update all uniform buffers even if only one of the buffer is dirty. In order to make this work, this CL also adds the reverse tracking from buffer binding to uniform blocks. Previously we already have the tracking of which buffer binding index is used for which buffer block index. This CL adds mUniformBlockBindingMasks which is an array of BitSets. Each array element tracks all the uniform block index that is using this buffer binding index (you can have the same buffer bound to multiple uniform block index). Then when a buffer binding index is dirty, that BitSet gets added into program's uniform block dirty bits. This CL and previous CL improves GfxBench gl_driver2_off score 1.8% (from average 6797 to average 6919) on pixel 7 pro. Bug: b/282194402 Change-Id: Ic5002643a5297907276fc9b20ca7d21af9bdc4fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4553136 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Jose Dapena Paz ad1255c2 2023-01-30T18:35:38 libstdc++: do not use std::logf or std::powf In libstdc++ there is no implementation of std::logf or std::powf, so they must be replaced with calls to std::log and std::pow, and use static_cast for using the right overload. Bug: chromium:957519 Change-Id: I3c94502c006db200148060c1d30e0dd28b8a30d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4352890 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b0e9bbd7 2023-05-31T14:23:40 Vulkan: Split features for dynamic state When a driver bug with dynamic state is encountered, it is hard to debug which dynamic state exactly is causing an issue, due to the current granularity of disabling all entire state from an extension. With this change, every dynamic state gets its own ANGLE feature, and can be toggled as necessary. Disabling the supportsExtendedDynamicState* features implicitly disables all dependent features. Bug: b/285124778 Bug: b/275210062 Bug: fuchsia:107106 Bug: angleproject:5906 Change-Id: Ic291279872df2d0eb58618ff364ab118bdcc4a9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4577553 Reviewed-by: Cody Northrop <cnorthrop@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Igor Nazarov da41e7d9 2023-05-29T19:17:48 Vulkan: Account for queueSubmitOneOff() in SurfaceVk::mUse There is a possibility to destroy EGLSurface without waiting for `queueSubmitOneOff()` submission. One possible way to reproduce the problem is to query `EGL_BUFFER_AGE_EXT` without any rendering in the EGL_SINGLE_BUFFER mode. This is a regression from: Reland "Vulkan: SurfaceVk should only wait for GPU work that uses it" https://chromium-review.googlesource.com/c/angle/angle/+/4406891 Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WaitOneOffSubmission* Bug: b/267806287 Change-Id: I9478fcc4fd64b38747cbd80dea51137da9ef5f21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567549 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mark Lobodzinski 29ad234a 2023-05-30T12:03:30 Tests: Add Off The Road trace Test: angle_trace_tests --gtest_filter=TraceTest.off_the_road Bug: b/285110104 Change-Id: I63e86ea9a18f9f60680ac758e284cc1b5e90c0ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4576882 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov ad1f58aa 2023-05-30T09:41:41 Tests: skip RGBTextureBufferTestES31 on Linux intel vulkan vk_icdNegotiateLoaderICDInterfaceVersion crashes (possibly Mesa bug?) Bug: angleproject:8179 Change-Id: I05812f436ab4f4ac2755c20bddc1cc33a28b5d8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4574146 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov ff110417 2023-04-21T15:16:03 Vulkan: Emulate RGB32 uniform texel buffers when unsupported Applies to: GL_RGB32F, GL_RGB32I, GL_RGB32UI When VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT is specified for these formats by the Vulkan driver, behavior is the same as before. When it is not speficied: previously ANGLE wouldn't enable GL_EXT_texture_buffer unless exposeNonConformantExtensionsAndVersions was enabled; now ANGLE always enables it and does the RGB->RGBA conversion (GPU) under the hood and tracks buffer content updates using the paths added for tracking this for Vertex Arrays. Bug: b/278585075 Bug: angleproject:8128 Change-Id: I4605719bf3f51c5a10c1a35ecae767833dcd45d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4456498 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com> 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Alexey Knyazev 73f9cf00 2023-03-31T00:00:00 GL: Implement polygon mode extensions * Implemented polygon mode extensions on the OpenGL backend * Supported capture and serialization of the new commands and state * Added PolygonModeTest end2end tests Bug: angleproject:1791 Bug: angleproject:8132 Change-Id: I3bc08546a02f110dd739950129bee25ccc507bf6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492683 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 1328f2f3 2023-04-17T16:43:12 Vulkan: Destroy the surface without holding the EGL lock This change defers surface destruction to the end of the entry point that causes it so that it is done without holding the EGL lock. This works around a specific deadlock in Android. On this platform: - For EGL applications, parts of surface creation and destruction are handled by the platform, and parts of it are done by the native EGL driver. Namely, on surface destruction, native_window_api_disconnect is called outside the EGL driver. - For Vulkan applications, vkDestroySurfaceKHR takes full responsibility for destroying the surface, including calling native_window_api_disconnect. Unfortunately, native_window_api_disconnect may use EGL sync objects and can lead to calling into the EGL driver. For ANGLE, this is particularly problematic because it is simultaneously a Vulkan application and the EGL driver, causing `vkDestroySurfaceKHR` to call back into ANGLE and attempt to reacquire the EGL lock. Since there are no users of the surface when calling vkDestroySurfaceKHR, it is safe for ANGLE to destroy it without holding the EGL lock. Note that only eglDestroySurface and eglMakeCurrent may lead to the destruction of a window surface. Bug: b/275176234 Bug: angleproject:8127 Change-Id: I02dc52e53e150943457e3f503e7ef30469f96b05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428754 Reviewed-by: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov a88635c4 2023-04-28T18:54:25 Android logs also go to stdout/err, line-buffered if possible Currently logs like WARN() or INFO() only go to logcat, which doesn't make them visible in console. This change makes them go to both logcat and stdout/err. Fix android_helper choking on missing json data output when test crashes and test runner doesn't have a chance to produce that file. We still have the stdout/err in this case, so print it. However, a crash (such as SIGSEGV or __builtin_trap()) doesn't flush output so the non-flushed part of the buffer doesn't get in there. AngleNativeTest redirects stdout/err to a file which enables fully-buffered (stdlib) mode. Change this to line-buffered when stdout path is set to /data/ (/sdcard/ is slow) and use /data/data/com.android.angle.test/tmp/ as the temp path in android_helper. This makes e.g. FATAL() << "message"; show up in the logs in CI or local runs. This currently only applies to trace and perf tests, other tests will continue using fully-buffered /stdout/ as chromium's test_runner uses /sdcard/Download/ for temp files. Bug: b/276742336 Change-Id: Ia622c610f776f501223b0cca11d5ec1976eb9887 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4493463 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 84b2e9d1 2023-05-01T13:52:54 Capture/Replay: android_helper handles traces in/outside of apk * list files in apk using `aapt list` * determine lib_extension (.so vs .cr.so) based on a known lib name * determine traces_outside_of_apk based on libangle_trace_interpreter * update so libs handling to use these vars * also fixes an issue where libangle_trace_interpreter.cr.so wasn't copied to the device due to a missing check for .cr.so Bug: b/276742336 Change-Id: I5ccc6490ed3398668feec56c816dd65a444234cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4495326 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov f46f3908 2023-05-01T14:06:16 Capture/Replay: fix interpreter lib placed inside/outside APK libangle_trace_interpreter is a shared library loaded the same way as binary trace libraries, so they should all go together either inside or outside the APK. Before this change this lib would end up inside the APK when binary libs were configured to stay outside of the APK. Bug: b/276742336 Change-Id: I690d63dcec94893692d6838bb816f9ec2477dfe1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4495327 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Cody Northrop c3ae9ac5 2023-03-30T19:58:18 Tests: Add Monster Hunter Stories trace Test: angle_trace_tests --gtest_filter="*monster_hunter_stories*" Bug: b/265827643 Bug: angleproject:7557 Change-Id: I7b53eff28fcd891456a755c82be3dc1de12eb79b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4385780 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Cody Northrop 5c0b4251 2023-04-25T19:58:03 Reland "Tests: Add Gacha Life trace" This reverts commit 55fbc2c502abc3d4265052eec865864f02cf8095 Relanding the trace now that we can support more traces on Android. Original change's description: > Tests: Add Gacha Life trace > > Test: angle_trace_tests --gtest_filter="*gacha_life*" > Bug: b/267382443 > Change-Id: I6bbfb28015bf0317ccdba699e08ce6bce51b4ce3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4211589 > Reviewed-by: Roman Lavrov <romanl@google.com> Test: run_angle_android_test.py angle_trace_tests --filter='*gacha_life*' Bug: b/276474703 Change-Id: Ia7f3b65d19a779b8cb925f429437b6548c59f669 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4477659 Commit-Queue: Ian Elliott <ianelliott@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop c7905f0a 2023-04-25T19:55:06 Scripts: Update setup for restricted_trace_perf Bug: b/276474703 Change-Id: I99a6ef212f6584ecace786da2587a8d2ae34eaa0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4477658 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev d37c97d1 2023-04-17T00:00:00 Metal: Implement OES_shader_multisample_interpolation * Added support for sample qualifier and shader interpolation functions * Added MSL-specific AST transformations * Adjusted minimum fragment interpolation offset state query test so that accurate limits could be reported * Drive-by: Y-flip gl_SamplePosition adjustment * Renamed ANGLESampleMaskEnabled function constant to ANGLEMultisampledRendering to correctly reflect its usage Bug: angleproject:8097 Bug: angleproject:8131 Change-Id: I25c9f36487e29f05bb9fe874e146d06378fef975 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440827 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop 35461e60 2023-04-12T20:02:08 Android: Build traces outside of APK Our trace list has gotten too large for a single APK (2GB). To continue supporting compiled traces, we can now place the libraries in the test application's home directory, which is discoverable and executable without root. To build and run with all traces, use `angle_trace_perf_tests` as your build target, then use the local Android helper script: $ autoninja -C out/<config> angle_trace_perf_tests $ (cd out/<config>; ../../src/tests/run_angle_android_test.py \ angle_trace_tests --filter='*among_us' \ --verbose --local-output --verbose-logging \ --fixed-test-time-with-warmup 10) To continue using bundled libraries, specify your trace list in GN args using `angle_restricted_traces` and use steps that match other platforms: $ autoninja -C out/<config> angle_trace_tests $ out/Android/angle_trace_tests --gtest_filter='*among_us*' \ --verbose --local-output --verbose-logging \ --fixed-test-time-with-warmup 10 Bug: b/276474703 Change-Id: I3829cf7016e21894eee8890e2b0d527e8214f04e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4420279 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev e27759f9 2023-04-20T00:00:00 D3D11: Ignore sample mask and A2C for single-sampled rendering Also fixed alpha-to-coverage for single-sampled rendering and simplified sample coverage code in the Vulkan backend. Fixed: angleproject:8102 Change-Id: Ieea03dfdc13c6105ddf916dca6d0fea593eb3a62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455508 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 5c9821fd 2023-04-21T00:00:00 GL: Fix readPixels for snorm color buffers Bug: angleproject:8048 Change-Id: Ie4f6c5abb6d53c195f4bf460f179ae24fffd0102 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4464157 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Geoff Lang f1b8a29a 2023-04-21T14:37:23 D3D11: Fix instanced vertex streaming data copies. Fix the other usage of ComputeVertexBindingElementCount in the D3D11 vertex streaming code. It is possible to try to copy too much source data due to incorrect instanced count calculations. Bug: chromium:1425606, chromium:1433180 Change-Id: Ie393b1c0b1291cf2b5087341c9fba8c98343d7bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4459152 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Igor Nazarov b22124bd 2023-01-17T17:44:06 Implement new "Global Mutex" functionality. This CL improves performance compared to the existing code as well as allows using non-std mutex implementations. Also acts as a base for future changes. CL adds new build option: angle_enable_global_mutex_recursion = is_android && angle_enable_vulkan "mutex_recursion" work same way as `std::recursive_mutex` before. It will help in situations when Vulkan API may return back to the ANGLE. For example: RenderDoc layer EGL deadlock. Automatic loading of "libVkLayer_GLES_RenderDoc.so" layer causes deadlock in EGL. Recursion stack: #01 pc 000000000029ea80 /vendor/lib64/egl/libGLESv2_angle.so (egl::GlobalMutexHelper::lock(int)+596) #02 pc 000000000029c59c /vendor/lib64/egl/libGLESv2_angle.so (EGL_GetError+32) #04 pc 0000000000062368 /system/lib64/libEGL.so (eglQueryString+20) #05 pc 0000000000508fec /data/local/debug/vulkan/libVkLayer_GLES_RenderDoc.so #20 pc 0000000000016690 /system/lib64/libvulkan.so (vulkan::api::EnumerateInstanceLayerProperties(unsigned int*, VkLayerProperties*)+40) #21 pc 00000000005aa030 /vendor/lib64/egl/libGLESv2_angle.so (rx::RendererVk::initialize(rx::DisplayVk*, egl::Display*, char const*, char const*)+292) #26 pc 000000000029c7e8 /vendor/lib64/egl/libGLESv2_angle.so (EGL_Initialize+192) Additionally, recursive mutex will partially solve Android SurfaceTexture deadlock (angleproject:4354). Some performance numbers for 1000'000 `eglGetError()` calls. Mutex Time (ms.) Android S906B egl::GetGlobalMutex()(std::recursive_mutex) 41.4 (Default) GlobalMutex (std::recursive_mutex) 39.1 (Recursive) GlobalMutex (std::mutex) 34.9 (Debug) GlobalMutex (std::mutex) 34.7 (Default) GlobalMutex (std::mutex) 34.4 Windows egl::GetGlobalMutex()(std::recursive_mutex) 20.5 (Default) GlobalMutex (std::recursive_mutex) 20.0 (Recursive) GlobalMutex (std::mutex) 21.9 (Debug) GlobalMutex (std::mutex) 20.5 (Default) GlobalMutex (std::mutex) 19.9 Note: Recursive GlobalMutex enabled only for Android Vulkan by default. Original fix: https://chromium-review.googlesource.com/c/angle/angle/+/2029218 Bug: angleproject:8101 Bug: angleproject:4354 Test: angle_unittests --gtest_filter=GlobalMutexTest.* Change-Id: I9e9d9b5c598ad1177ffa147ea690bd955946a712 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4401940 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 2ce6d8df 2023-04-20T17:16:00 TextureVk calls onStateChange when releasing buffer views TextureVk::setBuffer releases buffer views and they don't get initialized unless a dirty bit is set. That works on the first draw call because Texture::Texture() sets DIRTY_BIT_IMPLEMENTATION in constructor, but when called twice mBufferViews remains unitialized causing mBufferViews.getView() misbehavior. Fix this by calling onStateChange when buffer views are released. As mBufferViews is only initialized conditionally for texture buffers, add a bool for tracking whether it is in the initialized state to avoid marking texture as dirty unnecessarily. Note that this isn't handled by signalDirtyStorage() inside Texture::setBufferRange because (in this test case?) there are no observers on Texture so onStateChange called from Texture is a no-op. Texture however observes its TextureVk implementation so onStateChange calls from TextureVk end up setting the dirty bit in Texture::onSubjectStateChange. Bug: b/278585075 Change-Id: I2b83160cdd89a086ed81e8412cd64d0aad930911 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4457147 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
angle-autoroll 03f0e51d 2023-04-14T19:51:54 Roll VK-GL-CTS from a3d054bf72ab to b1e5b9348e77 (21 revisions) Define DE_FENV_ACCESS_ON based on https://github.com/KhronosGroup/VK-GL-CTS/commit/9f306457b48b3f8258ca44462003ef39b80a7515 https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/a3d054bf72ab..b1e5b9348e77 2023-04-14 gleese@broadcom.com Assert that the number of output buffers is correct 2023-04-14 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkansc-cts-1.0.1 into vk-gl-cts/main 2023-04-14 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-cts-4.6.3 into vk-gl-cts/main 2023-04-14 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-es-cts-3.2.9 into vk-gl-cts/main 2023-04-14 piotr.byszewski@mobica.com Test multiviewport with fragment density map 2023-04-14 rgarcia@igalia.com Test EDS3 feature interactions 2023-04-14 rgarcia@igalia.com Fix build with GCC 13 2023-04-14 gleese@broadcom.com Modify the max_vertex tests to have room for all attributes 2023-04-14 gleese@broadcom.com Share shader code in vertex_input tests 2023-04-14 marcin.zajac@mobica.com Add tests for manual derivatives with subgroups 2023-04-14 gleese@broadcom.com Fix some indentation in descriptor indexing tests 2023-04-14 gleese@broadcom.com Change descriptor_indexing tests to use stdint types 2023-04-14 gleese@broadcom.com Trivial simplification to descriptor_indexing tests 2023-04-14 gaopan24@hisilicon.com Fix upper Lod bound in image lod query tests 2023-04-14 cturner@igalia.com Revert "Fix VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07267 validation error." 2023-04-14 cturner@igalia.com Try to inform the compiler when dynamically changing the rounding mode. 2023-04-14 marcin.zajac@mobica.com Vulkan video 1.3.244 patch 2023-04-14 ziga@lunarg.com Initialize VkSparseImageMemoryRequirements2 struct in memory tests 2023-04-14 rgarcia@igalia.com Add dynamic color blend variants without dynamic logic op 2023-04-14 rgarcia@igalia.com Test vkCmdDrawIndirect*Count* with multiview 2023-04-14 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkan-cts-1.3.5 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC angle-team@google.com,ynovikov@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: None Change-Id: I4e0756379eb4fcf408bc9d142ef9a14eb300897e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4427126 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Yuly Novikov 23ff85fe 2023-04-20T13:32:37 Suppress newly added PixelLocalStorageTest.TextureLevelsAndLayers on iOS Metal Bug: angleproject:7994 Change-Id: I9d3a1e2af99e3127d74b96c0740054e47fd4b661 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455107 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Chris Dalton ef20f191 2023-03-29T14:05:04 Make the PLS allow list more permissive Allow ClipControlEXT, FlushMappedBufferRange, Gen*, PolygonOffset*, ProvokingVertexANGLE, and KHR_debug commands. Allow caps DEPTH_CLAMP_EXT, CLIP_DISTANCE[0..7]_EXT. Ban indexed caps besides BLEND, SCISSOR_TEST, SCISSOR_TEST_EXCLUSIVE_NV. Clarify that the index restrictions on indexed caps only apply to BLEND. Bug: chromium:1421437 Change-Id: Ibdb0acaebfa992ad37c928481d5ecb10496f22e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4382502 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Charlie Lao fa9172a3 2023-03-27T09:49:33 Reland "Vulkan: Use midRenderPass clear if RP has started but inactive" This is a reland of commit 98151770adfd990c533991da27615b4879494307 Original change's description: > Vulkan: Use midRenderPass clear if RP has started but inactive > > This CL extends prior CL's optimization so that if clear is issued right > after blitFramebuffer call (this could make sense if blit and clear are > on different buffer), we can keep the started render pass and do the > midRenderPass clear instead of endRenderPass and start another > renderPass. > > Bug: b/273808966 > Change-Id: Ia2504e8e260867a6f797d42cd4c8a72f187280ef > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374145 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: b/273808966 Change-Id: I5c8c85c173f021a7753ef579f83d9ceb24147a7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4442911 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 6deca89e 2023-03-22T22:33:40 Add Spirv Instruction to explicitly cast mediump float to 16 bit If the GLSL shader code expects the comparison between two mediump float values returning true, but the SpirV compiler treats one of them as 32-bit, and treats the other one as 16-bit, the comparison would return false instead. The SpirV compiler may not automatically cast the mediump float values to 16 bits, because it may utilize the RelaxedPrecision decoration to keep a mediump float as 32-bit, so that the compiler can avoid the type cast from 32-bit highp to 16-bit mediump. This change adds an additional OpQuantizeToF16 SpirV instruction to explicitly cast mediump float scalar or mediump float vector to 16 bit, if they are assigned with a highp float value. This ensures that if the GLSL shader code ever compares two meiump float values, the SpirV shader compiler is not accidentally comparing a 16 bit with a 32 bit float value. This fixe the deqp test failure on Pixel 6 and Pixel 7: dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex. Bug: b/274859104 Bug: b/274408172 Change-Id: Ifd996cea14c0f77f45ae90f38c8e53cf5035139f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400404 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Charlie Lao 9188aa0e 2023-04-18T10:05:29 Vulkan: Disallow reactivate of UtilsVk::blitResolve renderPass We are still seeing ClearTestES3.RepeatedStencilClearWithBlitInBetween/ES3_Vulkan flakiness on win-test bot with intel GPU. The exact root cause is still unknown. For now this CL will disallow reactivate of UtilsVk::blitResolve renderPass by the subsequent user's draw calls. Bug: b/273808966 Change-Id: Iebf37da3642d1fc3ee724b0743bfc0767ac48354 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4442446 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev 443ac5b4 2023-04-17T00:00:00 GL: Enable OES_shader_multisample_interpolation Drive-by: * Fixed validity of the related state queries * Added SampleMultisampleInterpolationTest * Removed unused OES_sample_variables code Bug: angleproject:8097 Bug: angleproject:8131 Change-Id: I816d2096759a96d8691acd0a8c5ecdedf880201b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440826 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Maksim Sisov fdbd6488 2023-04-12T14:02:44 metal: allow unequal size attachments. OpenGLES3.0 allows FBO with attachments that have unequal size. In Metal, an FBO is represented by a render pass pipeline, which is created using MTLRenderPassDescriptor descriptor. The render pass can have color attachments as well as depth and stencil attachments. Those individual attachments must have a texture attached, which works as a buffer. However, the documentation does not specify any dimension restrictions for those textures. Test: verify the FramebufferTest_ES3.AttachmentsWithUnequalDimensions passes. Test2: made a simple metal app that renders using an offscreen render pass pipeline to a texture that has size of 32x16 with a depth buffer attached (size of 16x32) and verified the pixels on that. The content outside the common area had undefined pixel data. Bug: angleproject:7994, angleproject:6447 Change-Id: I257f8e3aad497772cfc7de08314818ee5f434b84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4418266 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Chris Dalton 1e166daf 2023-04-10T23:49:46 Finalize PLS support for non-2D texture types Commit to supporting GL_TEXTURE_2D_ARRAY and GL_TEXTURE_3D, and add tests. Suppress D3D11 and Metal for now, since shader image support for non-2D types needs some work on those backends. Drop support for cube maps, since those will cause complications on an implementation based on texelFetch. Bug: chromium:1421437 Bug: angleproject:8124 Bug: angleproject:8125 Change-Id: I403ae157b7d2609f2190a98c2576c92f73441412 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4415150 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Charlie Lao 2f19bb74 2023-03-16T16:03:29 Reland "Vulkan: Reactivate already started render pass when possible" This is a reland of commit ad9537af7f2bb5e22bc73f4e833fd3789adaa217 Original change's description: > Vulkan: Reactivate already started render pass when possible > > In some usage case (such as lineage_mobile), we are seeing in the middle > of render pass, app switch to another fbo just to issue a glClear() > call, which the clear call itself gets deferred. Application then switch > back to the original frame buffer. Before this CL, the render pass gets > recreated due to frame buffer binding change, even though the clear gets > deferred and new render pass and the previous render pass are > essentially the same. This CL detects this situation and reactivate the > current render pass instead of creating a new one. With this CL, > lineage_m app trace reduces frame time from 3.86ms to 3.7ms, and only > one render pass is used instead of two. > > This CL also allows the render pass started by BlitFramebuffer reused by > subsequent draw calls. Asphalt_9 is hitting this use pattern and this CL > reduces frame time by 0.1245 ms (from 5.6203 ms to 5.4958 on pixel 7 > pro) > > Bug: b/273808966 > Change-Id: I48c2671cbef3ff9d6cf59caae88c37c77828ee07 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348713 > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: b/273808966 Change-Id: Ice9062122ae320b1a0108ff981bc65bd13b2ada0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4406888 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 7bc4b7e3 2023-03-27T00:00:00 Metal: Implement OES_sample_variables New ESSL built-ins are mapped to their Metal counterparts and tweaked to follow OpenGL ES semantics when needed. Fixed A2C interaction with sample coverage by emulating the former on non-Apple GPUs. Bug: angleproject:8097 Fixed: angleproject:5087 Change-Id: I5d28a941af5cbc14743a3930731529f11f55febd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404896 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Roman Lavrov 4e073356 2023-04-13T15:16:53 Trace Interpreter: gzip cpp and run gold tests. New test step: angle_restricted_trace_gold_interpreted_tests similar to existing angle_restricted_trace_gold_tests but runs a subset of newest traces that have the right format. Currently there are 8 of them and the filter is hard-coded in test_suites.pyl. rise_of_empires can also be run interpreted but happened to flake during testing so it's not included for now. Trace cpp files are concatenated and gzipped as a build step producing gen/tracegz_{trace}.gz and these gz files are then distributed as part of the build --trace-interpreter flag changes from boolean to string to support: --trace-interpreter=gz: * this uses the gz file above * gold tests added in this CL use this option --trace-interpreter=c: * using uncompressed c/cpp file * existing angle_trace_interpreter_tests runs a retrace saving .c files and uses this option Bug: b/276742336 Change-Id: I69544f25bda873af191978195d02ffbdd34363c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4424690 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>